首先要搭建JavaMail的開發環境,在JDK配置JavaMail的相關類和包。在構建JavaMail開發環境時,需要mail.jar和activation.jar。這兩個文件可以從SUN的官方網站下載。
JavaMail支持STMP、POP3、IMAP,封裝了郵件對象、發送、認證、接收等電子郵件功能。
在發送各種類型的郵件時,主要適用於以下幾類:
1)會話類。如果用戶想要發送電子郵件,他們首先需要創建壹個類Session的對象,並使用該對象創建壹個郵件對象並指定郵件服務器認證的客戶端屬性。它的類級別是javax.mail.Session
2)InternetAddress類。郵件發送的地址類,類的層次結構是javax . mail . internet . internet address,繼承自抽象類javax.mail.Address
3)MimeMessage類。郵件消息類,它的類層次結構是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% @ page import = " javax . mail . * " % & gt;
& lt% @ page import = " javax . mail . internet . * " % & gt;
& lt% @ page import = " javax . activation . * " % & gt;
& lt%
嘗試{
request . setcharacterencoding(" 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 = new Properties();
pro.put("mail.smtp.host "," smtp。"+服務器);
pro.put("mail.stmp.auth "," true ");
session sess = session . getinstance(pro);
sess . set debug(true);
mime message message = new 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.setRecipient(Message。RecipientType.TO,TO _ mail);
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 . getall recipients());
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對象添加到電子郵件的內容中。消息可以有許多部分,壹個BodyPart可以代表壹個部分。
MimeBodyPart類的類層次結構是javax . mail . internet . mimebodypart,mime BodyPart是特定於MimeMessage的body part的子類。MimeBodyPart對象表示MimeMessage對象的壹部分內容,每個MimeBodyPart被認為由兩部分組成:MIME類型和與該類型匹配的內容。
語法:
body part MDP = new mime body part();//創建壹個新的BodyPart對象來存儲信件的內容。
String messageText = "Hello World!";
//將MIME類型定義為text/html,設置MimeBodyPart的內容。
mdp.setContent(messageText," text/html ");
實施流程:
& lt% @ page import = " java.io. * " % & gt
& lt% @ page import = " Java . util . * " % & gt;
& lt% @ page import = " javax . mail . * " % & gt;
& lt% @ page import = " javax . mail . internet . * " % & gt;
& lt% @ page import = " javax . activation . * " % & gt;
& lt%
嘗試{
request . setcharacterencoding(" 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 message =新mime message(sess);
//設置消息對象的收件人、發件人、主題和發送時間。
internet address from = new internet address(from _ mail);
message.setFrom(來自);
internet address to = new internet address(to _ mail);
message.setRecipient(Message。收件人類型.收件人,收件人);
message.setSubject(主題);
message . setsentdate(new Date());
Multipart mul = new Multipart();//創建新的MimeMultipart對象來存儲多個BodyPart對象。
body part MDP = new mime body part();//創建壹個新的BodyPart對象來存儲信件的內容。
mdp.setContent(messageText," text/html;charset = GB 2312 ");
mul . addbodypart(MDP);//將包含信件內容的BodyPart添加到MimeMultipart對象中。
message . save changes();
transport transport = sess . get transport(" SMTP ");
transport.connect("smtp。"+服務器,from_mail,密碼);
transport.sendMessage(message,message . getall recipients());
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)將兩個郵件正文放入Multipart,將郵件內容設置為該容器的Multipart,發送郵件。
實施流程:
& lt% @ page import = " java.io. * " % & gt
& lt% @ page import = " Java . util . * " % & gt;
& lt% @ page import = " javax . mail . * " % & gt;
& lt% @ page import = " javax . mail . internet . * " % & gt;
& lt% @ page import = " javax . activation . * " % & gt;
& lt% @ page import = " java.net. * " % & gt
& lt%
嘗試{
request . setcharacterencoding(" GB 2312 ");
string from _ mail = request . getparameter(" sname ");
stiring 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 message =新mime message(sess);
//設置消息對象的收件人、發件人和主題。
internet address from = new internet address(from _ mail);
message.setFrom(來自);
internet address to = new internet address(to _ mail);
message.setRecipient(Message。收件人類型.收件人,收件人);
message.setSubject(標題);
multipart mul = new mime multipart();//創建新的MimeMultipart對象來存儲多個BodyPart對象。
body part MDP = new mime body part();//創建壹個新的BodyPart對象來存儲信件的內容。
mdp.setContent(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 . getall recipients());
transport . close();
Out.println("附件發送成功!");
}catch(Exception ex){
Out.print("郵件發送失敗,可能是因為:
out . println(ex . getmessage());
}
% & gt
4.群發郵件
將收件人地址設置為tomail+i的形式,使用for循環向這些地址發送郵件,達到群發郵件的目的。
使用Address類設置電子郵件信息的收件人和發件人信息。創建電子郵件地址類後,通過message的setFrom()方法設置電子郵件的發件人。代碼如下:
message . set from(from _ mail);
設置收件人地址時,使用setRecipient()方法設置收件人地址。代碼如下:
message.setRecipient(類型,地址);
參數類型是收件人類型。您可以使用以下三個常量來區分收件人的類型:
1)消息。
2) message.recipienttype.cc-cc。
3)message . recipient type . bcc-秘密發送。
註意:在日常使用中,我們經常使用兩種郵件發送形式:抄送和密件抄送。抄送和密件抄送都同時向多個郵箱發送電子郵件,但是它們
兩者是有壹定區別的。不同的是,密送隱藏了其他抄送人的地址,只讓收件人看到自己的地址,可以起到保密和防止垃圾郵件的作用。
實施流程:
& lt% @ page import = " java.io. * " % & gt
& lt% @ page import = " Java . util . * " % & gt;
& lt% @ page import = " javax . mail . * " % & gt;
& lt% @ page import = " javax . mail . internet . * " % & gt;
& lt% @ page import = " javax . activation . * " % & gt;
& lt%
嘗試{
int I = 1;
for(I = 1;我& lt4;i++){
request . setcharacterencoding(" 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 = new Properties();
pro.put("mail.smtp.host "," smtp。"+服務器);
pro.put("mail.smtp.auth "," true ");
session sess = session . getinstance(pro);
sess . set debug(true);
MimeMessage message =新mime message(sess);//創建新的消息對象
internet address from _ mail = new internet address(from);//設置發送方
message . set from(from _ mail);
//設置收件人
internet address to = new internet address(to);
message.setRecipient(Message。RecipientType.TO,TO _ mail);
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 . getall recipients());
transport . close();
if(i==3){
Out.print("郵件發送成功");
}
}
}catch(異常e){
Out.print("發送郵件失敗,可能是因為
out . println(e . getmessage());
}
% & gt
5.Spring使用WebService發送短信。
通過編程發短信是壹件很復雜的事情。目前壹般的解決方案是通過電腦和手機的連接,用手機編程語言編寫短信程序。這種方法不僅需要時間和精力,還需要相應的硬件設施,必須了解手機編程的相關知識。可以通過Web Service技術遠程訪問現有的短信發送服務器,通過調用服務器發送短信。
技術要點:
使用現有資源:可以發送短消息的Web服務遠程服務。該Web服務由新浪網站提供,允許用戶直接調用遠程服務發送消息。該服務的服務名為SMSWS,服務端口為SMSWebServiceSoapPort。在這個遠程服務中,提供了壹種發送短消息的方法,sendXml()。該方法定義如下:
公共字符串sendXml(字符串載體、字符串id、字符串密碼、字符串toMobile、字符串message、字符串msgtype)
功能:根據用戶給定的參數,向目標用戶的手機發送短信。
參數描述:
sendXml()方法中的六個參數都是字符串類型,sendXml()方法的返回值也是字符串類型。下面是sendXml()方法中六個參數的詳細描述。
1)運營商:運營商名稱。這個參數具體使用沒有具體要求,就是可以隨意輸入,輸入的字符串不會顯示在對方手機裏。
2)id:在新浪註冊的手機號。使用新浪服務發送短信時,您需要在新浪網站註冊您的手機。
3)密碼:手機註冊成功後,Sina.com發回的密碼。
4)toMobile:接收短信的對方手機號碼。
5)消息:要發送的短消息的內容。
6)msgtype:發送短消息的類型。由於不是彩信,請輸入文字。
調用sendXml()方法需要在Spring中配置壹個JaxRpcPortProxyFactoryBean的實例,然後定義包含該方法的接口,Spring會自動獲取遠程服務的接口。
實施流程:
application context AC = new classpathmlaplicationcontext(" application context . XML ");
SMSWebService send SMS =(SMSWebService)AC . get bean(" hello world service ");
String carrier = " lzwsky
string id = userid . gettext();
string password = password field . gettext();
string to mobile = tomobilefield . gettext();
string message = message field . gettext();
String msgtype = " Text
sendSms.sendXml(運營商,id,密碼,toMobile,message,msg type);