java郵件開發詳解筆記(創建一個內嵌圖片和附件的郵件)

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;
		}
	}

	

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章