package cn.test.demo; import java.io.FileOutputStream; 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 javax.mail.internet.MimeUtility; public class ComplexMail { /** * 复杂的邮件 * @throws MessagingException * @throws AddressException */ public static void main(String[] args) throws Exception { MimeMessage message = new MimeMessage(Session.getInstance(new Properties())); message.setFrom(new InternetAddress("aa@sina.com")); message.setRecipient(Message.RecipientType.TO, new InternetAddress("aa@sina.com")); message.setSubject("这是邮件"); //封装正文 MimeBodyPart text = new MimeBodyPart(); text.setContent("这是我的邮件xxx<br><img src='cid:3.jpg'>", "text/html;charset=UTF-8"); //封装图片 MimeBodyPart image = new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource("src\\3.jpg"))); image.setContentID("3.jpg"); //封装附件 MimeBodyPart attach = new MimeBodyPart(); DataHandler dh = new DataHandler(new FileDataSource("src\\灰色.mp3")); attach.setDataHandler(dh); String filename = dh.getName(); attach.setFileName(MimeUtility.encodeText(filename)); //附件的乱码问题 //描述正文和图片的关系 MimeMultipart content = new MimeMultipart(); content.addBodyPart(text); content.addBodyPart(image); content.setSubType("related"); //描述正文和附件的关系 MimeMultipart mm = new MimeMultipart(); mm.addBodyPart(attach); MimeBodyPart bp = new MimeBodyPart(); bp.setContent(content); mm.addBodyPart(bp); mm.setSubType("mixed"); message.setContent(mm); message.saveChanges(); message.writeTo(new FileOutputStream("c:\\3.eml")); } }