1. 程式人生 > >第二講:使用JavaMail表示MIME訊息(2)

第二講:使用JavaMail表示MIME訊息(2)

	public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {
		
		String from = "[email protected]";
		String to= "[email protected], [email protected]";
		String body = "<h4>歡迎大家閱讀郵件</h4>" 
		+"<a href = \"http://blog.csdn.net/wenwen1538\">歡迎訪問我的主頁</a>";
		
		String subject = "HTML郵件";
		
		Properties props = new Properties();
		Session session = Session.getInstance(props);
		
		Message msg= new MimeMessage(session);
		
		msg.setFrom(new InternetAddress(from));
		msg.setRecipients(RecipientType.TO, InternetAddress.parse(to));
		
		msg.setSubject(subject);
		msg.setSentDate(new Date());
		
		//建立代表郵件正文和附件的各個物件
		MimeBodyPart contentPart = createContent(body, "D:\\蝸牛的世界.png");
		MimeBodyPart attactment1 = createAttachment("D:\\create.sql");
		MimeBodyPart attachment2 = createAttachment("D:\\TTPmusic\\Maroon 5 - One More Night.mp3");
		
		//下面組合郵件正文和附件的Mimemultipart物件
		MimeMultipart allMultipart = new MimeMultipart("mixed");
		allMultipart.addBodyPart(contentPart);
		allMultipart.addBodyPart(attactment1);
		allMultipart.addBodyPart(attachment2);
		
		//將multipart物件設定為整個郵件的內容,要使用saveChanges進行更新
		msg.setContent(allMultipart);
		msg.saveChanges();
		
		//將物件寫入檔案中
		msg.writeTo(new FileOutputStream("d:\\test.eml"));
	}
	
	public static MimeBodyPart createContent(String body, String filename) throws MessagingException{
		
		//建立一個MimeBodyPart物件存放Mimemultipart物件
		MimeBodyPart contentBodyPart = new MimeBodyPart();
		
		//建立一個子型別為"related"的Mimemultipart物件
		MimeMultipart multipart = new MimeMultipart();
		multipart.setSubType("related");
		//建立一個HTML正文的MimeBodyPart物件,並將其載入到Mimemultipart物件中
		MimeBodyPart htmlBodyPart = new MimeBodyPart();
		htmlBodyPart.setContent(body, "text/html; charset=gb2312");
		multipart.addBodyPart(htmlBodyPart);
		
		//建立一個圖片內容的MimeBodyPart物件並將其加入前面建立的Mimemultipart物件中
		MimeBodyPart imgBodyPart = new MimeBodyPart();
		FileDataSource fds = new FileDataSource(filename);
		imgBodyPart.setDataHandler(new DataHandler(fds));
		imgBodyPart.setContentID("uind--woniu--png-001");
		multipart.addBodyPart(imgBodyPart);
	
		//將Mimemultipart物件加入到MimeBodyPart物件中
		contentBodyPart.setContent(multipart);
		return contentBodyPart;
	}
	
	public static 	MimeBodyPart createAttachment(String filename) throws MessagingException{
		//建立儲存附件的MimeBodyPart物件,並且加入附件內容和相應的資訊
		MimeBodyPart attachmentPart = new MimeBodyPart();
		FileDataSource fds = new FileDataSource(filename);
		attachmentPart.setDataHandler(new DataHandler(fds));
		attachmentPart.setFileName(fds.getName());
		return attachmentPart;
	}