java邮件开发-----生成本地图片邮件eml格式文件

参考书籍《张孝详java邮件开发详解》

import java.util.Date;

import java.util.Properties;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Session;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

public class PictureMessage {

public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {

// TODO Auto-generated method stub

String from = "xxxxxxxxx@sina.com";

String to = "xxxxxxxxx@qq.com";

String subject = "HTML邮件";

String body = "<a href=https://www.baidu.com > <h4>欢迎大家订阅此邮件</h4> </a>"

+ "</br> <img src=\"cid:test_img\">";

/*cid:test_img  表示引用MIME消息中Content-ID属性值为test_img的消息体 数据*/

//创建Session实例对象

Session session = Session.getDefaultInstance(new Properties());

//创建MimeMessage实例对象

MimeMessage msg = new MimeMessage(session);

//设置发件人

msg.setFrom(new InternetAddress(from));

//设置收件人

msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));

//创建一个子类型为“related”的MimeMultipart对象

MimeMultipart multipart = new MimeMultipart("related");

/**

* 创建一个表示HTML正文的MimeBodyPart对象,

* 并将它加入到前面创建的MimeMultipart对象中

*/

MimeBodyPart htmlBodyPart = new MimeBodyPart();

htmlBodyPart.setContent(body,"text/html;charset=gb2312");

multipart.addBodyPart(htmlBodyPart);

/*创建一个表示图片内容的MimeBodyPart对象,

* 并将它加入到前面创建的MimeMultipart对象中*/

MimeBodyPart gifbBodyPart = new MimeBodyPart();

FileDataSource fdsDataSource = new FileDataSource("F:\\个人资料\\照片\\IMG_4373(20181209-182601).jpg");

gifbBodyPart.setDataHandler(new DataHandler(fdsDataSource));

gifbBodyPart.setContentID("test_img");

//上一行代码改成如下语句也可以,建议读者自己想想为什么

// gifbBodyPart.setHeader("Content-ID", "test_img");

/**

* 不必使用下面这条语句设置图片的MIME类型,因为上面使用的JAF框架中的

* DataSource对象能够返回数据源的MIME类型,所以上面的setDataHandler方法能够设置好Content-Type消息头

*/

// gifbBodyPart.setHeader("Content-Type", "image/jpg");

multipart.addBodyPart(gifbBodyPart);

//设置邮件主题

msg.setSubject(subject);

/*将MimeMultipart对象设置为整个邮件的内容,要注意调用saveChanges方法进行更新*/

msg.setContent(multipart);

//保存并生成最终的邮件内容

msg.saveChanges();

//把MimeMessage 对象中的内容写入到文件中

msg.writeTo(new FileOutputStream("D:\\Eclipse\\PictureMessage.eml"));

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容