JSP與JavaMail(5)---傳送三種型別的附件 (轉)

worldblog發表於2007-08-17
JSP與JavaMail(5)---傳送三種型別的附件 (轉)[@more@]

6.傳送三種型別的附件

前面我們已學會了傳送一般文字和超文字郵件,今天我們將讓大家學會編寫三種型別的附件的郵件
傳送.(注:撰寫介面仍然用前面的)



.util.*,javax..*"%>

<!--要傳送附件必須引入該庫--&gt
<!--要用到URL類--&gt



傳送成功


try{
String tto=request.getParameter("to");
String ttitle=request.getParameter("title");
String tcontent=request.getParameter("content");
Properties props=new Properties();
props.put("mail.smtp.host","127.0.0.1");
props.put("mail.smtp.auth","true");
Session s=Session.getInstance(props);
s.setDe(true);

MimeMessage message=new MimeMessage(s);

//給訊息設定發件人/收件人/主題/發信時間
InternetAddress from=new InternetAddress("xxf@cafe.com");
message.setFrom(from);
InternetAddress to=new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(ttitle);
message.setSentDate(new Date());

Multipart mm=new MimeMultipart();//新建一個MimeMultipart物件用來存放多個BodyPart物件

//設定信件文字內容
BodyPart mdp=new MimeBodyPart();//新建一個存放信件內容的BodyPart物件
mdp.setContent(tcontent,"text/html;charset=gb2312");//給BodyPart物件設定內容和格式/編碼方式
mm.adodyPart(mdp);//將含有信件內容的BodyPart加入到MimeMultipart物件中

//設定信件的附件1(自定義附件:直接將所設文字內容加到自定義中作為附件傳送)
mdp=new MimeBodyPart();//新建一個存放附件的BodyPart
DataHandler dh=new DataHandler("JavaMail附件測試","text/plain;charset=gb2312");
//新建一個DataHandler物件,並設定其內容和格式/編碼方式
mdp.setFileName("xxf.txt");//加上這句將作為附件傳送,否則將作為信件的文字內容
mdp.setDataHandler(dh);//給BodyPart物件設定內容為dh
mm.addBodyPart(mdp);//將含有附件的BodyPart加入到MimeMultipart物件中

//設定信件的附件2(用本地上的檔案作為附件)
mdp=new MimeBodyPart();
FileData fds=new FileDataSource("g:/xx.txt");
dh=new DataHandler(fds);
mdp.setFileName("dd.txt");//可以和原檔名不一致
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);

//設定信件的附件3(用檔案作為附件)
mdp=new MimeBodyPart();
URLDataSource ur=new URLDataSource(new URL("study//xx.gif"));
//注:這裡用的引數只能為URL物件,不能為URL字串,在前面類介紹時有誤(請諒解),這裡糾正一下.
dh=new DataHandler(ur);
mdp.setFileName("ss.txt");
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);

message.setContent(mm);//把mm作為訊息物件的內容

message.saveChanges();
Transport transport=s.getTransport("smtp");
transport.connect("127.0.0.1","xxf","coffee");
transport.sendMessage(message,message.getAllRecipients());
transport.close();
%>

}catch(MessagingException e){
out.println(e.toString());
}
%>



傳送附件是不是很有趣呢?但是在這裡由於沒有修改撰寫介面,要傳送的附件只能在程式裡固定,所以一點都不靈活.不用擔心,下一次我們將重寫撰寫介面,當然同時也會修改郵件處理程式,到時我們將能靈活地傳送自己的郵件.

(待續)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-963594/,如需轉載,請註明出處,否則將追究法律責任。

相關文章