91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用JavaMail API編寫可帶附件的郵件發送程序(轉)

發布時間:2020-08-08 18:01:09 來源:ITPUB博客 閱讀:186 作者:rainytag 欄目:編程語言
利用Sun公司提供的JavaMail API可以很方便的開發郵件發送程序。也許你已經可以利用它來發送一段簡單的文本了,但想不想使你的程序像OUTLOOK一樣也能發送附件呢?本文在簡單介紹了JavaMail之后,詳細講解了一段完整的送信的JavaBean及一個十分輕巧的servlet。


(沒有裝載JavaMail API的讀者,可以到此站點下載,并按照Readme.txt設置好ClassPath)


一、JavaMail中一些我們需要的類


1.Properties


JavaMail需要Properties來創建一個session對象,其屬性值就是發送郵件的主機,如:


Properties props = new Properties ();
props.put("mail.smtp.host", "smtp.xxxx.com");//可以換上你的smtp主機名,就像你在OutLook中設置smtp主機名一樣。



2.Session


所有的基于JavaMail的程序都至少需要一個或全部的對話目標。


Session session = Session.getInstance(props, null);



3.MimeMessage


信息對象將把你所發送的郵件真實的反映出來。


MimeMessage msg = new MimeMessage(session);



4.Transport


郵件的發送是由Transport來完成的:


Transport.send(msg);



二、我們自己創建的可發送附件的類


import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class Mail {
//定義發件人、收件人、主題等
String to="";
String from="";
String host="";
String filename="";
String subject="";
//用于保存發送附件的文件名的集合
Vector file = new Vector();
//做一個可以傳發件人等參數的構造
public Mail (String to,String from,String smtpServer,String subject){
//初始化發件人、收件人、主題等
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//該方法用于收集附件名
public void attachfile(String fname){
file.addElement(fname);
}
//開始發送信件的方法
public boolean startSend(){
//創建Properties對象
Properties props = System.getProperties();
//創建信件服務器
props.put("mail.smtp.host", host);
//得到默認的對話對象
Session session=Session.getDefaultInstance(props, null); try {
//創建一個消息,并初始化該消息的各項元素
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//后面的BodyPart將加入到此處創建的Multipart中
Multipart mp = new MimeMultipart();
//利用枚舉器方便的遍歷集合
Enumeration efile=file.elements();
//檢查序列中是否還有更多的對象
while(efile.hasMoreElements()){
MimeBodyPart mbp=new MimeBodyPart();
//選擇出每一個附件名
filename=efile .nextElement().toString();
//得到數據源
FileDataSource fds=new FileDataSource(filename);
//得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
//得到文件名同樣至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
//移走集合中的所有元素
file.removeAllElements();
//Multipart加入到信件
msg.setContent(mp);
//設置信件頭的發送日期
msg.setSentDate(new Date());
//發送信件
Transport.send(msg);
} catch (MessagingException mex) {
mex.printStackTrace();
Exception ex = null;
if ((ex=mex.getNextException())!=null){
ex.printStackTrace();
}
return false;
}
return true;
}
}



三、一個簡單的servlet


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SendMail extends
HttpServlet implements SingleThreadModel{
public void init(ServletConfig Conf)
throws ServletException {
super.init(Conf);
}
public void doPost(HttpServletRequest
Req, HttpServletResponse Res)
throws ServletException, IOException {
try{
//實例化剛才我們做的類,并按其構造傳進相應的參數
Mail sendmail=newMail("zhang@263.net",
"chtwoy@21cn.com","smtp.21cn.com","test");
sendmail.attachfile("table.pdf");
sendmail.startSend();
}catch(Exception e){
e.printStackTrace();
}
}
public void destroy() {
}
}



四、小結


至此,你已經可以在郵件中添加附件了,而且可以是多個。像這樣,將響應與邏輯相分離對代碼的擴展和維護是相當有好處的。若Beans與servlet不在同一個包下,別忘了“import”。


為推出更好的文章請支持本站文章評比!


摘自“Java家” http://www.javajia.com
歡迎轉載,但請保留文章出處[@more@]
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台江县| 兰溪市| 务川| 黄山市| 长宁县| 安阳市| 封开县| 封丘县| 行唐县| 焉耆| 太保市| 延川县| 连平县| 来安县| 正安县| 新民市| 阳山县| 乐亭县| 林州市| 古蔺县| 天峻县| 扎兰屯市| 汕头市| 增城市| 夹江县| 洱源县| 景宁| 汽车| 固阳县| 岢岚县| 壶关县| 永宁县| 玉龙| 平乐县| 宜丰县| 二连浩特市| 陇川县| 驻马店市| 龙游县| 萨嘎县| 栾川县|