1. 程式人生 > >JavaMail java郵件開發_填充和完善建立複雜郵件的細節程式碼

JavaMail java郵件開發_填充和完善建立複雜郵件的細節程式碼

JavaMail03:

package com.yuming.test;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Session;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/**
 * 架子是對的,但是裡面有問題
 * @author Administrator
 *報錯資訊:
 *Exception in thread "main" java.io.IOException: No content
 *at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:106)
	at javax.activation.DataHandler.writeTo(DataHandler.java:305)
	at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
	at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)
	at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)
	at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)
	at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:889)
	at javax.activation.DataHandler.writeTo(DataHandler.java:317)
	at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)
	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1659)
	at com.yuming.test.JavaMail03.main(JavaMail03.java:72)

 */
public class JavaMail03 {

	public static void main(String[] args) throws Exception {
		
		Session session = Session.getInstance(new Properties());
		MimeMessage msg = new MimeMessage(session);
		
		msg.setSubject("這是發郵件的主題");
		
		//mixed---混合關係
		MimeMultipart  msgMultipart = new MimeMultipart("mixed");
		msg.setContent(msgMultipart);
		msg.getReplyTo();
		
		//html body與附件整合
		//body
		MimeBodyPart content = new MimeBodyPart();
		//附件1
		MimeBodyPart attch1 = new MimeBodyPart();
		//附件2
		MimeBodyPart attch2 = new MimeBodyPart();
		
		msgMultipart.addBodyPart(content);
		msgMultipart.addBodyPart(attch1);
		msgMultipart.addBodyPart(attch2);
		
		//附件1
	    DataSource ds = new FileDataSource("D:\\ycsql.txt");
		DataHandler dh1 = new DataHandler(ds );
		attch1.setDataHandler(dh1);
		attch1.setFileName("ycsql.txt");
		
		//附件2
		 DataSource ds2 = new FileDataSource("D:\\log.jpg");
		 DataHandler dh2 = new DataHandler(ds2 );
		 attch1.setDataHandler(dh2);
		 attch2.setFileName("log.jpg");
		 
		 //內容 related--關聯關係
		 MimeMultipart  bodyMultipart = new MimeMultipart("related");
		 content.setContent(bodyMultipart);
		 
		 MimeBodyPart htmlpart = new MimeBodyPart();
		 MimeBodyPart gifpart = new MimeBodyPart();
		 bodyMultipart.addBodyPart(htmlpart);
		 bodyMultipart.addBodyPart(gifpart);
	
		 DataSource gifds = new FileDataSource("D:\\log.jpg");
		 DataHandler gifdh = new DataHandler(gifds );
		 gifpart.setDataHandler(gifdh);
		 gifpart.setHeader("Content-Location", "D:\\log.jpg");
		 
		 //htmlpart
		 htmlpart.setContent("我自己用程式生成和傳送的郵件哦!<img src='D:\\log.jpg'>", "text/html;charset=UTF-8");
		 
		 //根據這些物件生成郵件
		 msg.saveChanges();
		 
		 OutputStream os =  new FileOutputStream("E:\\JavaMail03.eml");
		 msg.writeTo(os);
		// msg.writeTo(os);
		 os.close();
		 

	}


}

 報錯資訊:
 

/**
 * 架子是對的,但是裡面有問題
 * @author Administrator
 *報錯資訊:
 *Exception in thread "main" java.io.IOException: No content
 *at javax.mail.internet.MimePartDataSource.getInputStream(MimePartDataSource.java:106)
	at javax.activation.DataHandler.writeTo(DataHandler.java:305)
	at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
	at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:845)
	at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:361)
	at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:85)
	at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:889)
	at javax.activation.DataHandler.writeTo(DataHandler.java:317)
	at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1350)
	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1683)
	at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1659)
	at com.yuming.test.JavaMail03.main(JavaMail03.java:72)

 */