参考书籍《张孝详java邮件开发详解》
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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;
public class ComplexMessage {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Session session = Session.getDefaultInstance(new Properties());
MimeMessage message = createMessage(session);
message.writeTo(new FileOutputStream("D:\\Eclipse\\ComplexMessage.eml"));
}
private static MimeMessage createMessage(Session session) throws Exception, MessagingException {
// TODO Auto-generated method stub
String from = "xxxxxxxxxxxxxx@sina.com"; //发件人地址
String to = "xxxxxxxxxxxxxxx@qq.com"; //收件人地址
String subject = "HTML邮件" ; //邮件主题
String body = "<a href=www.baidu.com>" +
"欢迎大家访问网址</a></br>" +
"<img src=\"cid:test_img\">";
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
message.setSubject(subject);
//创建代表邮件正文和附件的各个MimeBodyPart对象
MimeBodyPart contentBodyPart = createContent(body,"F:\\个人资料\\照片\\IMG_4373(20181209-182601).jpg");
MimeBodyPart attachPart1 = createAttachment("F:\\个人资料\\xxxxxxx.MP4");
MimeBodyPart attachPart2 = createAttachment("F:\\个人资料xxxxxxxxxx.pptx");
//创建用于组合邮件正文和附件的MimeMultipart对象
MimeMultipart allMultipart = new MimeMultipart("mixed");
allMultipart.addBodyPart(contentBodyPart);
allMultipart.addBodyPart(attachPart1);
allMultipart.addBodyPart(attachPart2);
//设置整个邮件内容为最终组合出的MimeMultipart对象
message.setContent(allMultipart);
message.saveChanges();
return message;
}
private static MimeBodyPart createAttachment(String filename) throws Exception {
// TODO Auto-generated method stub
//创建保存附件的MimeBodyPart对象,并加入附件内容和相应信息
MimeBodyPart attachPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(filename);
attachPart.setDataHandler(new DataHandler(fds));
attachPart.setFileName(fds.getName());
return attachPart;
}
private static MimeBodyPart createContent(String body, String filename) throws Exception {
// TODO Auto-generated method stub
/*创建代表组合MIME消息的MimeMultipart对象,
* 和将该MimeMultipart对象保存到MimeBodyPart对象
*/
MimeBodyPart contentPart = new MimeBodyPart();
MimeMultipart contentMultipart = new MimeMultipart("related");
/*创建用于保存HTML正文的MimeBodyPart对象,
* 并将它保存到MimeMultipart中
*/
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(body,"text/html;charset=gb2312");
contentMultipart.addBodyPart(htmlBodyPart);
/*创建用于保存图片的MimeBodyPart对象,
* 并将它保存到MimeMultipart中
*/
MimeBodyPart gifBodyPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(filename);
gifBodyPart.setDataHandler(new DataHandler(fds));
gifBodyPart.setContentID("test_img");
contentMultipart.addBodyPart(gifBodyPart);
//将MimeMultipart对象保存到MimeBodyPart对象中
contentPart.setContent(contentMultipart);
return contentPart;
}
}