首先,我們應該構建JavaMail的開發環境,並在JDK配置JavaMail的相關類和包。在構建JavaMail開發環境時,需要mail.jar和activation.jar。這兩個文件可以從SUN的官方網站下載。
JavaMail支持STMP、POP3和IMAP,封裝了郵件對象、發送、認證和接收等電子郵件功能。
當發送各種類型的郵件時,它主要適用於以下類別:
1)會話類。如果用戶想要發送電子郵件,他們首先需要創建壹個Session類的對象,並使用該對象創建壹個mail對象並指定郵件服務器身份驗證的客戶端屬性。它的類級別是javax.mail.Session
2)internet address類。郵件發送的地址類,類層次結構是javax . mail . internet . internet address,它繼承自抽象類javax.mail.Address
3)模擬消息類。郵件消息類,它的類層次結構是javax . mail . internet . mime message,它繼承自抽象類javax.mail.Message
4)運輸類。郵件發送類,其類層次結構為javax.mail.Transport
5)驗證器類。Authorizer類,JavaMail使用Authenticator類通過用戶名和密碼訪問那些受保護的資源,其中“資源”是郵件服務器。它的類層次結構是javax.mail.Authenticator
6)商店類。用於從郵件服務器接收郵件,其類層次結構為javax.mail.Store
7)文件夾類。郵件文件夾類,其類層次結構為javax.mail.Folder
實施過程:
& lt% @ page import =“Java . io . *“% & gt;
& lt% @ page import =“Java . util . *“% & gt;
& lt%@個頁面導入=“javax . mail . *“% & gt;
& lt%@個頁面導入=“javax . mail . internet . *“% & gt;
& lt% @ page import =“javax . activation . *“% & gt;
& lt%
嘗試{
request . setcharacter encoding(“GB 2312“);
string from = request . getparameter(“jname“);
string to = request . getparameter(“sname“);
string subject = request . getparameter(“title“);
string message text = request . getparameter(“message“);
string password = request . getparameter(“password“);
string S = request . getparameter(“jname“);
int n = s . index of(‘@‘);
int m = s . length();
string server = s . substring(n+1,m);
//建立郵件會話
Properties pro =新屬性();
pro . put(“mail . smtp . host“,“SMTP。+服務器);
pro . put(“mail . stmp . auth“,“true“);
session sess = session . getinstance(pro);
sess . set debug(true);
MimeMessage消息=新的mime message(mess);//創建新的消息對象
//設置發送方
internet address from _ mail = new internet address(from);
message . set from(from _ mail);
//設置收件人
internet address to _ mail = new internet address(to);
Message . set recipient(Message。收件人類型。收件人,收件人_郵件);
message.setSubject(主題);//設置主題
message . settext(message text);//設置內容
message . setsentdate(new Date());//設置發送時間
//發送郵件
message . save changes();//保存電子郵件信息
transport transport = sess . get transport(“SMTP“);
transport . connect(“SMTP+服務器、發件人、密碼);
transport . sendmessage(message,message . getallrecipients());
transport . close();
Out.print(“郵件發送成功“);
}catch(異常e ){
Out.print(“發送電子郵件失敗,可能是因為
out . println(e . getmessage());
}
% & gt
2.以HTML格式發送電子郵件
MimeMultipart對象用於存儲HTML文件的具體內容,在設置內容時應設置對象的格式。
MimeMultipart類的類層次結構是javax . mail . internet . mime Multipart .存儲電子郵件內容的通用容器是Multipart抽象類,它定義了添加、刪除和獲取電子郵件不同內容的方法。因為Multipart是壹個抽象類,所以必須使用壹個具體的子類。JavaMail API提供javax . mail . internet . mime multipart類來使用MimeMessage對象。
語法:
multipart mul = new mime multipart();
描述:使用MimeMultipart對象時常用的方法是addBodyPart(),它可以將BodyPart對象添加到電子郵件的內容中。消息可以有許多部分,壹個正文部分可以代表壹個部分。
MimeBodyPart類的類層次結構是javax . mail . internet . mime BodyPart . mime body part是特定於MimeMessage的body part的子類。MimeBodyPart對象表示MimeMessage對象的壹部分內容,每個MimeBodyPart被認為由兩部分組成:MIME類型和與該類型匹配的內容。
語法:
body part MDP = new mime body part();//創建壹個新的BodyPart對象來存儲信件的內容。
string message text =“Hello World!“;
//將MIME類型定義為text/html,並設置MimeBodyPart的內容。
MDP . set content(message text,“text/html“);
實施過程:
& lt% @ page import =“Java . io . *“% & gt;
& lt% @ page import =“Java . util . *“% & gt;
& lt%@個頁面導入=“javax . mail . *“% & gt;
& lt%@個頁面導入=“javax . mail . internet . *“% & gt;
& lt% @ page import =“javax . activation . *“% & gt;
& lt%
嘗試{
request . setcharacter encoding(“GB 2312“);
string from _ mail = request . getparameter(“sname“);
string to _ mail = request . getparameter(“rname“);
string subject = request . getparameter(“title“);
string message text = request . getparameter(“message“);
string password = request . getparameter(“password“);
string S = request . getparameter(“sname“);
int n = s . index of(‘@‘);
int m = s . length();
string server = s . substring(n+1,m);
Properties prop = new Properties();
prop . put(“mail . smtp . host“,“SMTP。“+服務器);
prop . put(“mail . SMTP . auth“,“true“);
session sess = session . getinstance(prop);
sess . set debug(true);
MimeMessage消息=新的mime message(sess);
//為消息對象設置收件人、發件人、主題和發送時間。
internet address from = new internet address(from _ mail);
message.setFrom(來自);
InternetAddress to =新的internet address(to _ mail);
Message . set recipient(Message。收件人類型。收件人,收件人);
message.setSubject(主題);
message . setsentdate(new Date());
Multipart mul = new Multipart();//創建新的MimeMultipart對象以存儲多個BodyPart對象。
body part MDP = new mime body part();//創建壹個新的BodyPart對象來存儲信件的內容。
MDP . set content(message text,“text/html;charset = GB 2312“);
mul . addbodypart(MDP);//將包含字母內容的BodyPart添加到MimeMultipart對象。
message . save changes();
transport transport = sess . get transport(“SMTP“);
transport . connect(“SMTP+服務器,發件人郵件,密碼);
transport . sendmessage(message,message . getallrecipients());
transport . close();
Out.println(“郵件發送成功!“);
}catch(異常e ){
Out.print(“發送電子郵件失敗,可能是因為
out . println(e . getmessage());
}
% & gt
3.發送帶附件的郵件
通常,在設計帶有附件的郵件發送程序時,可以遵循以下步驟:
1)要發送帶有附件的電子郵件,需要建立電子郵件的各個電子郵件正文部分,並在第壹部分(即電子郵件的內容文本)後添加帶有DataHandler的附件。
2)如果文件作為附件發送,則應該建立FileDataSource類型的對象作為附件數據源;如果從URL讀取數據並將其作為附件發送,則應該建立壹個URLDataSource類型的對象作為附件數據源。
3)傳入數據源(FileDataSource或URLDataSource)對象作為DataHandler類的構造函數的參數,從而建立壹個DataHandler對象作為數據源的DataHandler。
4)將此DataHandler設置為郵件正文的DataHandler,從而完成郵件正文與附件的關聯。下面的工作是使用BodyPart的setFileName()方法將附件名稱設置為原始文件名。
5)將兩個電子郵件正文放入多部分中,將電子郵件內容設置為該容器的多部分,並發送電子郵件。
實施過程:
& lt% @ page import =“Java . io . *“% & gt;
& lt% @ page import =“Java . util . *“% & gt;
& lt%@個頁面導入=“javax . mail . *“% & gt;
& lt%@個頁面導入=“javax . mail . internet . *“% & gt;
& lt% @ page import =“javax . activation . *“% & gt;
& lt% @ page import =“Java . net . *“% & gt;
& lt%
嘗試{
request . setcharacter encoding(“GB 2312“);
string from _ mail = request . getparameter(“sname“);
sting to _ mail = request . getparameter(“rname“);
string from _ PSD = request . getparameter(“password“);
string title = request . getparameter(“title“);
string content = request . getparameter(“content“);
string path = request . getparameter(“attachment“);
string S = request . getparameter(“sname“);
int n = s . index of(‘@‘);
int m = s . length();
string server = s . substring(n+1,m);
Properties prop = new Properties();
prop . put(“mail . smtp . host“,“SMTP。“+服務器);
prop . put(“mail . SMTP . auth“,“true“);
session sess = session . getinstance(prop);
session . set debug(true);
MimeMessage消息=新的mime message(sess);
//為消息對象設置收件人、發件人和主題。
internet address from = new internet address(from _ mail);
message.setFrom(來自);
InternetAddress to =新的internet address(to _ mail);
Message . set recipient(Message。收件人類型。收件人,收件人);
message.setSubject(標題);
multipart mul = new mime multipart();//創建新的MimeMultipart對象以存儲多個BodyPart對象。
body part MDP = new mime body part();//創建壹個新的BodyPart對象來存儲信件的內容。
MDP . set content(content,“text/html;charset = GB 2312“);
mul . addbodypart(MDP);//將包含字母內容的BodyPart添加到MimeMultipart對象。
//設置信件的附件
MDP = new mime body part();//創建用於存儲附件的新BodyPart。
data handler handler = new data handler(“JavaMail附件測試“,“text/plain;charset = GB 2312“);//創建新的DataHandler對象並設置其內容、格式和編碼方法。
MDP . set filename(“mrsoft“);//可能與源文件名不壹致。
mdp.setDataHandler(處理程序);
mul . addbodypart(MDP);
message . set content(mul);//將mul作為消息對象的內容。
message . save changes();
transport transport = sess . get transport(“SMTP“);
transport . connect(“SMTP+server,from_mail,from _ PSD);
transport . sendmessage(message,message . getallrecipients());
transport . close();
Out.println(“附件發送成功!“);
}catch(例外情況){
Out.print(“郵件發送失敗,可能是因為:
out . println(ex . getmessage());
}
% & gt
4.群發郵件
將收件人地址設置為tomail+i的形式,並使用for循環將郵件發送到這些地址,以達到群發郵件的目的。
使用Address類設置電子郵件信息的收件人和發件人信息。創建電子郵件地址類後,通過message的setFrom()方法設置電子郵件的發件人。代碼如下:
message . set from(from _ mail);
在設置收件人地址時,使用setRecipient()方法設置收件人地址。代碼如下:
message.setRecipient(類型,地址);
參數類型是收件人類型。您可以使用以下三個常量來區分收件人的類型:
1)消息。收件人類型。待發送。
2)郵件。收件人類型。抄送。
3)message . recipient type . bcc-秘密發送。
註意:在日常使用中,我們經常使用兩種郵件發送形式:抄送和密件抄送。抄送和密件抄送都同時向多個郵箱發送電子郵件,但是它們
它們之間有壹定的區別。不同的是,秘密投遞隱藏了其他抄送人的地址,只允許收件人看到自己的地址,這可以起到保密和防止垃圾郵件的作用。
實施過程:
& lt% @ page import =“Java . io . *“% & gt;
& lt% @ page import =“Java . util . *“% & gt;
& lt%@個頁面導入=“javax . mail . *“% & gt;
& lt%@個頁面導入=“javax . mail . internet . *“% & gt;
& lt% @ page import =“javax . activation . *“% & gt;
& lt%
嘗試{
int I = 1;
for(I = 1;我& lt4;i++){
request . setcharacter encoding(“GB 2312“);
string from = request . getparameter(“from _ mail“);
string to = request . getparameter(“to mail“+I);
string subject = request . getparameter(“subject“);
string message text = request . getparameter(“message“);
string password = request . getparameter(“password“);
string S = request . getparameter(“from _ mail“);
int n = s . index of(‘@‘);
int m = s . length();
string server = s . substring(n+1,m);
//建立郵件會話
Properties pro =新屬性();
pro . put(“mail . smtp . host“,“SMTP。+服務器);
pro . put(“mail . SMTP . auth“,“true“);
session sess = session . getinstance(pro);
sess . set debug(true);
MimeMessage消息=新的mime message(sess);//創建新的消息對象
internet address from _ mail = new internet address(from);//設置發送方
message . set from(from _ mail);
//設置收件人
internet address to = new internet address(to);
Message . set recipient(Message。收件人類型。收件人,收件人_郵件);
message.setSubject(主題);//設置主題
message . settext(message text);//設置內容
message . setsentdate(new Date());//設置發送時間
message . save changes();//保存電子郵件信息
transport transport = sess . get transport(“SMTP“);
transport . connect(“SMTP+服務器、發件人、密碼);
transport . sendmessage(message,message . getallrecipients());
transport . close();
if(I = = 3 ){
Out.print(“電子郵件發送成功“);
}
}
}catch(異常e ){
Out.print(“發送電子郵件失敗,可能是因為
out . println(e . getmessage());
}
% & gt
5.Spring使用WebService發送短信。
通過編程發送短信是壹件復雜的事情。目前壹般的解決方案是通過電腦與手機的連接,使用手機編程語言編寫短信程序。這種方法不僅需要時間和精力,還需要相應的硬件設施和必須了解手機編程的相關知識。您可以通過Web服務技術遠程訪問現有的短信發送服務器,並通過調用服務器發送短信。
技術要點:
使用現有資源:可以發送短消息的Web服務遠程服務。該Web服務由新浪網站提供,允許用戶直接調用遠程服務發送消息。該服務的服務名稱為SMSWS,服務端口為SMSWebServiceSoapPort。在這個遠程服務中,提供了壹種發送短消息的方法sendXml()。該方法定義如下:
公共字符串sendXml(字符串載體、字符串id、字符串密碼、字符串toMobile、字符串message、字符串msgtype)
功能:根據用戶給定的參數向目標用戶的手機發送短信。
參數描述:
sendXml()方法中的六個參數都是字符串類型,sendXml()方法的返回值也是字符串類型。以下是sendXml()方法中六個參數的詳細描述。
1)運營商:運營商名稱。該參數的具體使用沒有具體要求,即可以隨意輸入,輸入的字符串不會顯示在對方手機中。
2)id:在新浪註冊的手機號碼。使用新浪服務發送短信時,您需要在新浪網站註冊手機。
3)密碼:手機註冊成功後Sina.com發回的密碼。
4)toMobile:接收短信的對方手機號碼。
5)消息:要發送的短消息的內容。
6)msg type:發送短消息的類型。由於不是彩信,請輸入文本。
調用sendXml()方法需要在Spring中配置壹個JaxRpcPortProxyFactoryBean的實例,然後定義包含該方法的接口,Spring將自動獲取遠程服務的接口。
實施過程:
application context AC = new classpathmlaplicationcontext(“application context . XML“);
SMSWebService sendSms =(SMSWebService)AC . get bean(“hello world service“);
string carrier =“lzwsky“;
string id = userid . gettext();
string password = password field . gettext();
string toMobile = tomobilefield . gettext();
string message = message field . gettext();
string msg type =“Text“;
sendSms.sendXml(運營商、id、密碼、toMobile、消息、msg type);