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 = "[email protected]";
String to = "[email protected]";
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郵件開發詳解筆記(創建一個內嵌圖片和附件的郵件)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.