public static void main(String[] args) throws MessagingException, IOException {
//先不配置环境,只是作为测试
Session session = Session.getInstance(new Properties());
//先实例化一个message类
Message message = new MimeMessage(session);
message.setSubject("带有附件和图片的复杂形式的邮件");
message.setSentDate(new Date());//设置发送时间
message.setFrom(new InternetAddress(MimeUtility.encodeText("黄文韬")+" <hwt_211@sina.com>"));
message.setReplyTo(new Address[]{new InternetAddress(MimeUtility.encodeText("黄林")+" <hwt_211@qq.com>")});
message.setRecipient(RecipientType.TO, new InternetAddress(MimeUtility.encodeText("黄林")+" <hwt_211@qq.com>"));
//因为这封邮件包括附件和正文(html和图片),所以是一种混合模式的
Multipart msgMultipart = new MimeMultipart("mixed");
message.setContent(msgMultipart);//和message建立关系
MimeBodyPart attach1 = new MimeBodyPart();
MimeBodyPart attach2 = new MimeBodyPart();
MimeBodyPart content = new MimeBodyPart();
msgMultipart.addBodyPart(attach1);
msgMultipart.addBodyPart(attach2);
msgMultipart.addBodyPart(content);
//对附件1的操作
DataSource ds1 = new FileDataSource("resource\\Java培训.txt"); //相对路径
DataHandler dh1 = new DataHandler(ds1);
attach1.setDataHandler(dh1);
attach1.setFileName(MimeUtility.encodeText("java培训.txt"));//对于附件一定要记得设置文件的名字
//对附件2的操作
DataSource ds2 = new FileDataSource("resource\\slogo.gif");
DataHandler dh2 = new DataHandler(ds2);
attach2.setDataHandler(dh2);
attach2.setFileName(MimeUtility.encodeText("slogo.gif"));
//对正文的操作
Multipart bodyContent = new MimeMultipart("related");
content.setContent(bodyContent);//和content建立关系
MimeBodyPart htmlPart = new MimeBodyPart();
MimeBodyPart imgPart = new MimeBodyPart();
bodyContent.addBodyPart(htmlPart);
bodyContent.addBodyPart(imgPart);
//对于正文中的img部分的操作
DataSource imgds = new FileDataSource("resource\\logo.gif");
DataHandler imgDh = new DataHandler(imgds);
imgPart.setDataHandler(imgDh);
imgPart.setHeader("Content-Location", "www.hwt_211.com");
//对于html部分的操作
htmlPart.setContent("韬哥哥现在可以用代码发邮件了,牛逼不?<img src='www.hwt_211.com'/>","text/html;charset=gbk");
message.saveChanges();//邮件编写完毕
OutputStream os = new FileOutputStream("resource\\demo3.eml");//有开就要有关
message.writeTo(os);
os.close();//关闭流