package zxx.createMessage;
import java.io.FileOutputStream;
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.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
* 5.10 创建一个内嵌图片和附件的邮件
* 要点:
* 1、创建html格式的邮件
* 2、创建相应的附件
* @author 后飞IT
*
*/
public class ComplexMessage {
public static void main(String[] args) {
try {
Session session = Session.getDefaultInstance(new Properties());
MimeMessage message = createMessage(session);
message.writeTo(new FileOutputStream("c:\\ComplexMessage.eml"));
} catch (Exception e) {
e.printStackTrace();
}
}
private static MimeMessage createMessage(Session session) {
try {
String from = "763464507@126.com";
String to = "763464507@126.com";
String subject = "test";
String body = "<h4>欢迎大家阅读次邮件</h4>"
+ "<img src=\"cid:it315_alogo_gif\"/>";
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
msg.setSentDate(new Date());
msg.setSubject(subject);
// 创建代表邮件正文和附件的各个MimeBodyPart对象
MimeBodyPart contentPart = createContent(body, "c:\\1.gif");
MimeBodyPart attachPart1 = createAttachment(body, "c:\\InstallLog.log");
MimeBodyPart attachPart2 = createAttachment(body, "c:\\setup.log");
// 创建用于组合邮件正文和附件的MimeMultipart对象 此时是多种混合的是所以是mixed
MimeMultipart allMultipart = new MimeMultipart("mixed");
allMultipart.addBodyPart(contentPart);
allMultipart.addBodyPart(attachPart1);
allMultipart.addBodyPart(attachPart2);
// 设置整个邮件内容为最红组合出的MimeMultipart对象
msg.setContent(allMultipart);
msg.saveChanges();
return msg;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 这个部分是创建html格式的邮件
* @param body
* @param fileName
* @return
*/
private static MimeBodyPart createContent(String body, String fileName) {
try {
/*
* 创建代表组合MIME消息的MimeMulPart对象,和该MimeMulpart对象 保存到的MimeBodyPart对象
*/
MimeBodyPart contentPart = new MimeBodyPart();
//创建html,是以来类型的 ralated
MimeMultipart contentMultipart = new MimeMultipart("ralated");
/*
* 创建用于保存HTML正文的mimebodyPart对象,并将保存到MIMEMULPART中
*/
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("it315_alogo_gif");
contentMultipart.addBodyPart(gifBodyPart);
// 将MimeMultiPart对象保存到MimeMultiPart对象中
contentPart.setContent(contentMultipart);
return contentPart;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 用于创建附件
* @param body
* @param fileName
* @return
*/
private static MimeBodyPart createAttachment(String body, String fileName) {
try {
//创建一个保存附件的MIMEBODYPART对象,并加入附件内容和相应的信息
MimeBodyPart attchPart=new MimeBodyPart();
FileDataSource fds=new FileDataSource(fileName);
attchPart.setDataHandler(new DataHandler(fds));
attchPart.setFileName(fds.getName());
return attchPart;
} catch (MessagingException e) {
e.printStackTrace();
return null;
}
}
}
java邮件开发详解笔记(创建一个内嵌图片和附件的邮件)
最新推荐文章于 2024-04-18 05:40:59 发布