JSP與JavaMail(6)---編寫靈活的郵件傳送程式 (轉)

worldblog發表於2007-08-17
JSP與JavaMail(6)---編寫靈活的郵件傳送程式 (轉)[@more@]七.編寫靈活的傳送

本小節沒加什麼新鮮的東西,但是綜合了以前的所有內容,可以讓你靈活地傳送你想要發的.看了本小節之後對你會感覺到非常有用.

更改後的撰寫介面程式如下:
-------------------------------------------------------------------------------------------



撰寫郵件


" method="post" name="form1">



























收信人地址:
主題:
信件型別
< name="etype" id="type">


附件1(自定義):

(輸入文字資訊)
附件2(本地):
附件3():

(輸入URL)







處理郵件的JSP程式如下:
----------------------------------------------------------------------------------------


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

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



傳送成功


try{
String tto=request.getParameter("to");
String ttitle=request.getParameter("title");
String emailtype=request.getParameter("emailtype");//獲取email型別
String tcontent=request.getParameter("content");
String tfj1=request.getParameter("fj1");
String tfj2=request.getParameter("fj2");
String tfj3=request.getParameter("fj3");

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,emailtype+";charset=gb2312");//給BodyPart物件設定內容和格式/編碼方式
mm.adodyPart(mdp);//將含有信件內容的BodyPart加入到MimeMultipart物件中

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

//設定信件的附件2(用本地上的檔案作為附件)
mdp=new MimeBodyPart();
FileData fds=new FileDataSource(tfj2);
dh=new DataHandler(fds);
int ddd=tfj2.lastIndexOf("");
String fname=tfj2.substring(ddd);//提取檔名
String ffname=new String(fname.getBytes("gb2312"),"ISO8859-1");//處理檔名是中文的情況
mdp.setFileName(ffname);//可以和原檔名不一致,但最好一樣
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);

//設定信件的附件3(用遠端檔案作為附件)
mdp=new MimeBodyPart();


URL urlfj=new URL(tfj3);
URLDataSource ur=new URLDataSource(urlfj);
//注:這裡用的引數只能為URL物件,不能為URL字串,在前面類介紹時有誤(請諒解),這裡糾正一下.
dh=new DataHandler(ur);
int ttt=tfj3.lastIndexOf("/");
String urlname=tfj3.substring(ttt);
//String urlfname=new String(urlname.getBytes("gb2312"),"ISO8859-1");//不知怎麼回事,這裡不能處理中文問題
mdp.setFileName(urlname);
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-963596/,如需轉載,請註明出處,否則將追究法律責任。

相關文章