如果你使用 Java 2 平臺企業(yè)版 ( J2EE ) 1.3 , 你真幸運:它包括 JavaMail,因此沒有必要另外安裝。然而,如果你正在運行 Java 2 平臺標準版 ( J2SE ) 1.1.7 及更高版本, 要使你的應用程序能夠收發(fā)電子郵件,則應下載并安裝下列程序:
創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站建設、網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元三門峽做網(wǎng)站,已為上家服務,為三門峽各地企業(yè)和個人服務,聯(lián)系電話:028-86922220
· JavaMail
· JavaBeans Activation Framework
安裝方法是解壓縮下載文件并把包含的jar文件添加到你的類路徑中(classpath)。以下是一個項目的類路徑(classpath)的例子:
.;C:\Apps\Java\javamail-1.2\mail.jar;C:\Apps\Java\javamail-1.2\mailapi.jar ;C:\Apps\Java\javamail-1.2\pop3.jar;C:\Apps\Java\javamail-1.2\smtp.jar;C:\Apps\Java\jaf-1.0.1\activation.jar
mailapi.jar 文件包含核心 API 類, pop3.jar 和 smtp.jar 文件為各自的郵件協(xié)議包含實現(xiàn)方法。(我們不會在這篇文章中使用 imap.jar 文件。)實現(xiàn)方法類似于 JDBC ( Java 數(shù)據(jù)庫連接 ) 驅動程序, 但消息系統(tǒng)并非數(shù)據(jù)庫。至于 mail.jar 文件, 它包含上面的所有jar文件, 因此你可以把類路徑(classpath)只設定到 mail.jar 和 activation.jar 文件。
activation.jar 文件允許你通過二進制數(shù)據(jù)流處理 MIME ( 多用途因特網(wǎng)郵件擴展 )類型,不僅是在plain text部分查找DataHandler類。
作為文字,余下這篇文章不會提供全面的 API ;相反,你將通過實踐學習到更多東西。如果涉及較深的 API 信息,請查看在各自的下載包中的 PDF 文件和Javadocs。
一旦你安裝了軟件,你需要取得一個電子郵件帳號以便運行列在后面的例子,包括你的 ISP 的SMTP(簡單郵件傳輸協(xié)議 ) 服務器名和POP (郵局協(xié)議 )服務器名, 你的電子郵件帳號登錄名,以及你的郵箱密碼。圖 1 顯示了具體需要的一些郵件帳號細節(jié)(并不一定是真實郵件賬號),你可以通過使用Microsoft Outlook加以理解。
Figure 1. Tony's Internet mail settings
通過SMTP發(fā)送電子郵件
第一個例子顯示怎樣通過SMTP發(fā)送一條基本的電子郵件消息。下面, 你可以看到SimpleSender類, 它從命令行取得你的消息細節(jié)并調用一個單獨的方法——send(...)——傳送消息:
package com.lotontech.mail;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
/**
* 一個簡單郵件發(fā)送類.
*/
public class SimpleSender
{
/**
* Main 方法以發(fā)送在命令行給出的消息.
*/
public static void main(String args[])
{
try
{
String smtpServer=args[0];
String to=args[1];
String from=args[2];
String subject=args[3];
String body=args[4];
send(smtpServer, to, from, subject, body);
}
catch (Exception ex)
{
System.out.println("Usage: java com.lotontech.mail.SimpleSender" +" smtpServer toAddress fromAddress subjectText bodyText");
}
System.exit(0);
}
接下來, 運用SimpleSender,與你的郵件設置一樣,用你自己的SMTP服務器名代替smtp.myISP.net :
java com.lotontech.mail.SimpleSender smtp.myISP.net bill@lotontech.com ben@lotontech.com "Hello" "Just to say Hello."
如果能正常運行,在收到的信息中你將看見與圖 2 顯示的一樣。
Figure 2. Message received from SimpleSender
Send()方法將完完善SimpleSender類。我將首先顯示出代碼, 然后再詳細說明理論:
/**
* "send" 方法發(fā)送消息.
*/
public static void send(String smtpServer, String to, String from, String subject, String body)
{
try
{
Properties props = System.getProperties();
// -- 連接一個缺省會話,或新建一個 --
props.put("mail.smtp.host", smtpServer);
Session session = Session.getDefaultInstance(props, null);
// -- 創(chuàng)建一個新消息 --
Message msg = new MimeMessage(session);
// -- 設置 FROM 和 TO 域 --
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to, false));
// --我們也可以包含 CC 收件人 --
// if (cc != null)
// msg.setRecipients(Message.RecipientType.CC
// ,InternetAddress.parse(cc, false));
// -- 設置 subject 和 body 文本 --
msg.setSubject(subject);
msg.setText(body);
// -- 設置其他一些標頭信息--
msg.setHeader("X-Mailer", "LOTONtechEmail");
msg.setSentDate(new Date());
// -- 發(fā)送消息 --
Transport.send(msg);
System.out.println("Message sent OK.");
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
未完待續(xù),從網(wǎng)站上截取下來的,有完全的Java郵件設計說明,還有圖片說明,一共三頁,好好看吧
合法E-mail地址:
1. 必須包含一個并且只有一個符號“@”
2. 第一個字符不得是“@”或者“.”
3. 不允許出現(xiàn)“@.”或者.@
4. 結尾不得是字符“@”或者“.”
5. 允許“@”前的字符中出現(xiàn)“+”
6. 不允許“+”在最前面,或者“+@”
正則表達式如下:
-----------------------------------------------------------------------
^(\w+((-\w+)|(\.\w+))*)\+\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$
-----------------------------------------------------------------------
字符描述:
^ :匹配輸入的開始位置。
\:將下一個字符標記為特殊字符或字面值。
* :匹配前一個字符零次或幾次。
+ :匹配前一個字符一次或多次。
(pattern) 與模式匹配并記住匹配。
x|y:匹配 x 或 y。
[a-z] :表示某個范圍內的字符。與指定區(qū)間內的任何字符匹配。
\w :與任何單詞字符匹配,包括下劃線。
$ :匹配輸入的結尾。
我給你提供一個我在項目里面實際使用的代碼.
這是我基于一個網(wǎng)上的代碼自己修改封裝過來的.
你可以參考一下
/**
*?
*?@author?Sglee
*?
*/
public?class?SimpleMail?{
private?static?String?encode?=?null;
static?{
if?("\\".equals(File.separator))?{
encode?=?"GBK";
}?else?{
encode?=?"UTF-8";
}
}
/**
?*?以文本格式發(fā)送郵件
?*?
?*?@param?mailInfo
?*?@return
?*/
public?static?boolean?sendTextMail(MailInfo?mailInfo)?{
for?(int?i?=?0;?i??3;?i++)?{
//?判斷是否需要身份認證
MyAuthenticator?authenticator?=?null;
Properties?properties?=?mailInfo.getProperties();
if?(mailInfo.isValidate())?{
//?如果需要身份認證,則創(chuàng)建一個密碼驗證器
authenticator?=?new?MyAuthenticator(mailInfo.getUsername(),
mailInfo.getPassword());
}
//?根據(jù)郵件會話屬性和密碼驗證器構造一個發(fā)送郵件的session
Session?sendMailSession?=?Session.getDefaultInstance(properties,
authenticator);
if?(mailInfo.isDebug())?{
sendMailSession.setDebug(true);
}
try?{
Message?mailMessage?=?new?MimeMessage(sendMailSession);//?根據(jù)session創(chuàng)建一個郵件消息
Address?from?=?new?InternetAddress(mailInfo.getFromAddress());//?創(chuàng)建郵件發(fā)送者地址
mailMessage.setFrom(from);//?設置郵件消息的發(fā)送者
//?Address?to?=?new?InternetAddress(mailInfo.getToAddress());//
//?創(chuàng)建郵件的接收者地址
//?mailMessage.setRecipient(Message.RecipientType.TO,?to);//
//?設置郵件消息的接收者
mailMessage.setRecipients(Message.RecipientType.TO,
wrapAddress(mailInfo.getToAddress()));
//?InternetAddress?ms?=?new
//?InternetAddress(mailInfo.getMsAddress());
//?mailMessage.setRecipient(Message.RecipientType.BCC,?ms);?//
//?密送人
mailMessage.setRecipients(Message.RecipientType.BCC,
wrapAddress(mailInfo.getMsAddress()));
mailMessage.setSubject(mailInfo.getSubject());//?設置郵件消息的主題
mailMessage.setSentDate(new?Date());//?設置郵件消息發(fā)送的時間
//?mailMessage.setText(mailInfo.getContent());//設置郵件消息的主要內容
//?MimeMultipart類是一個容器類,包含MimeBodyPart類型的對象
Multipart?mainPart?=?new?MimeMultipart();
MimeBodyPart?messageBodyPart?=?new?MimeBodyPart();//?創(chuàng)建一個包含附件內容的MimeBodyPart
//?設置HTML內容
messageBodyPart.setContent(mailInfo.getContent(),
"text/html;?charset="?+?encode);
mainPart.addBodyPart(messageBodyPart);
//?存在附件
String[]?filePaths?=?mailInfo.getAttachFileNames();
if?(filePaths?!=?null??filePaths.length??0)?{
for?(String?filePath?:?filePaths)?{
messageBodyPart?=?new?MimeBodyPart();
File?file?=?new?File(filePath);
if?(file.exists())?{//?附件存在磁盤中
FileDataSource?fds?=?new?FileDataSource(file);//?得到數(shù)據(jù)源
messageBodyPart
.setDataHandler(new?DataHandler(fds));//?得到附件本身并至入BodyPart
messageBodyPart.setFileName("=?"?+?encode?+?"?B?"
+?file.getName());//?得到文件名同樣至入BodyPart
mainPart.addBodyPart(messageBodyPart);
}
}
}
//?將MimeMultipart對象設置為郵件內容
mailMessage.setContent(mainPart);
Transport.send(mailMessage);//?發(fā)送郵件
return?true;
}?catch?(Exception?e)?{
e.printStackTrace();
try?{
java.util.concurrent.TimeUnit.SECONDS.sleep(5);
}?catch?(Exception?e2)?{
e2.printStackTrace();
}
}
}
return?false;
}
/**
?*?將string[]包裝成EmailAddress
?*?@param?mailInfo
?*?@return
?*?@throws?AddressException
?*/
private?static?Address?[]?wrapAddress(String[]?adds)?throws?AddressException?{
//?String[]?adds?=?mailInfo.getToAddress();
if(adds?==?null?||?adds.length?==?0){
return?null;
}
Address?[]to?=?new?Address[adds.length];
for(int?i?=?0;iadds.length;i++){
to[i]=new?InternetAddress(adds[i]);
}
return?to;
}
/**
?*?以HTML格式發(fā)送郵件
?*?
?*?@param?mailInfo
?*?@return
?*/
public?static?boolean?sendHtmlMail(MailInfo?mailInfo)?{
for?(int?i?=?0;?i??3;?i++)?{
//?判斷是否需要身份認證
MyAuthenticator?authenticator?=?null;
Properties?properties?=?mailInfo.getProperties();
if?(mailInfo.isValidate())?{
//?如果需要身份認證,則創(chuàng)建一個密碼驗證器
authenticator?=?new?MyAuthenticator(mailInfo.getUsername(),
mailInfo.getPassword());
}
//?根據(jù)郵件會話屬性和密碼驗證器構造一個發(fā)送郵件的session
Session?sendMailSession?=?Session.getDefaultInstance(properties,
authenticator);
if?(mailInfo.isDebug())?{
sendMailSession.setDebug(true);
}
try?{
Message?mailMessage?=?new?MimeMessage(sendMailSession);//?根據(jù)session創(chuàng)建一個郵件消息
Address?from?=?new?InternetAddress(mailInfo.getFromAddress());//?創(chuàng)建郵件發(fā)送者地址
mailMessage.setFrom(from);//?設置郵件消息的發(fā)送者
//?Address?to?=?new?InternetAddress(mailInfo.getToAddress());//
//?創(chuàng)建郵件的接收者地址
//?mailMessage.setRecipient(Message.RecipientType.TO,?to);//
//?設置郵件消息的接收者
mailMessage.setRecipients(Message.RecipientType.TO,
wrapAddress(mailInfo.getToAddress()));
//?InternetAddress?ms?=?new
//?InternetAddress(mailInfo.getMsAddress());
//?mailMessage.setRecipient(Message.RecipientType.BCC,?ms);?//
//?密送人
mailMessage.setRecipients(Message.RecipientType.BCC,
wrapAddress(mailInfo.getMsAddress()));
mailMessage.setSubject(mailInfo.getSubject());//?設置郵件消息的主題
mailMessage.setSentDate(new?Date());//?設置郵件消息發(fā)送的時間
//?MimeMultipart類是一個容器類,包含MimeBodyPart類型的對象
Multipart?mainPart?=?new?MimeMultipart();
MimeBodyPart?messageBodyPart?=?new?MimeBodyPart();//?創(chuàng)建一個包含HTML內容的MimeBodyPart
//?設置HTML內容
messageBodyPart.setContent(mailInfo.getContent(),
"text/html;?charset="?+?encode);
mainPart.addBodyPart(messageBodyPart);
//?存在附件
String[]?filePaths?=?mailInfo.getAttachFileNames();
if?(filePaths?!=?null??filePaths.length??0)?{
sun.misc.BASE64Encoder?enc?=?new?sun.misc.BASE64Encoder();
for?(String?filePath?:?filePaths)?{
messageBodyPart?=?new?MimeBodyPart();
File?file?=?new?File(filePath);
if?(file.exists())?{//?附件存在磁盤中
FileDataSource?fds?=?new?FileDataSource(file);//?得到數(shù)據(jù)源
messageBodyPart
.setDataHandler(new?DataHandler(fds));//?得到附件本身并至入BodyPart
messageBodyPart.setFileName("=?"?+?encode?+?"?B?"
+?enc.encode(EmailFileNameConvert.changeFileName(file.getName()).getBytes())
+?"?=");//?得到文件名同樣至入BodyPart
mainPart.addBodyPart(messageBodyPart);
}
}
}
//?將MimeMultipart對象設置為郵件內容
mailMessage.setContent(mainPart);
Transport.send(mailMessage);//?發(fā)送郵件
return?true;
}?catch?(Exception?e)?{
e.printStackTrace();
try?{
java.util.concurrent.TimeUnit.SECONDS.sleep(5);
}?catch?(Exception?e2)?{
e2.printStackTrace();
}
}
}
return?false;
}
}
/**
*?封裝郵件的基本信息
*?
*?@author?Sglee
*?
*/
public?class?MailInfo?implements?Serializable{
/**
?*?
?*/
private?static?final?long?serialVersionUID?=?-3937199642590071261L;
private?String?mailServerHost;//?服務器ip
private?String?mailServerPort;//?端口
private?long?timeout;//?超時時間
private?String?fromAddress;//?發(fā)送者的郵件地址
private?String[]?toAddress;//?郵件接收者地址
private?String[]?msAddress;//?密送地址
private?String?username;//?登錄郵件發(fā)送服務器的用戶名
private?String?password;//?登錄郵件發(fā)送服務器的密碼
private?boolean?validate?=?false;//?是否需要身份驗證
private?String?subject;//?郵件主題
private?String?content;//?郵件內容
private?String[]?attachFileNames;//?附件的文件地址
private?boolean?debug;//?調試模式
public?Properties?getProperties()?{
Properties?p?=?new?Properties();
p.put("mail.smtp.host",?this.mailServerHost);
p.put("mail.smtp.port",?this.mailServerPort);
p.put("mail.smtp.auth",?validate???"true"?:?"false");
p.put("mail.smtp.timeout",?this.timeout);
return?p;
}
public?String?getMailServerHost()?{
return?mailServerHost;
}
public?void?setMailServerHost(String?mailServerHost)?{
this.mailServerHost?=?mailServerHost;
}
public?String?getMailServerPort()?{
return?mailServerPort;
}
public?void?setMailServerPort(String?mailServerPort)?{
this.mailServerPort?=?mailServerPort;
}
public?String?getFromAddress()?{
return?fromAddress;
}
public?void?setFromAddress(String?fromAddress)?{
this.fromAddress?=?fromAddress;
}
public?String[]?getToAddress()?{
return?toAddress;
}
public?void?setToAddress(String[]?toAddress)?{
this.toAddress?=?toAddress;
}
public?String?getUsername()?{
return?username;
}
public?void?setUsername(String?username)?{
this.username?=?username;
}
public?String?getPassword()?{
return?password;
}
public?void?setPassword(String?password)?{
this.password?=?password;
}
public?boolean?isValidate()?{
return?validate;
}
public?void?setValidate(boolean?validate)?{
this.validate?=?validate;
}
public?String?getSubject()?{
return?subject;
}
public?void?setSubject(String?subject)?{
this.subject?=?subject;
}
public?String?getContent()?{
return?content;
}
public?void?setContent(String?content)?{
this.content?=?content;
}
public?String[]?getAttachFileNames()?{
return?attachFileNames;
}
public?void?setAttachFileNames(String[]?attachFileNames)?{
this.attachFileNames?=?attachFileNames;
}
public?void?setMsAddress(String[]?msAddress)?{
this.msAddress?=?msAddress;
}
public?String[]?getMsAddress()?{
return?msAddress;
}
public?void?setDebug(boolean?debug)?{
this.debug?=?debug;
}
public?boolean?isDebug()?{
return?debug;
}
public?void?setTimeout(long?timeout)?{
this.timeout?=?timeout;
}
public?long?getTimeout()?{
return?timeout;
}
}
public?class?MyAuthenticator?extends?Authenticator?{
private?String?username?=?null;
private?String?password?=?null;
public?MyAuthenticator()?{
};
public?MyAuthenticator(String?username,?String?password)?{
this.username?=?username;
this.password?=?password;
}
protected?PasswordAuthentication?getPasswordAuthentication()?{
return?new?PasswordAuthentication(username,?password);
}
}
注意一下:
Myeclipse自帶的JavaEE5.jar和java?mail會發(fā)生沖突
找到ME下的javeee包
D:\MyEclipse?8.5\Common\plugins\com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033\data\libraryset\EE_5\javaee.jar
用rar等解壓工具解開javaee.jar,刪除里面的javax\mail文件夾(可以先備份javaee.jar)
也即,以后都不能使用javaee.jar里面的郵件api發(fā)送郵件了.
用戶注冊后先把注冊信息放入數(shù)據(jù)庫,狀態(tài)為未注冊 1.發(fā)送郵件(郵件內容為網(wǎng)頁格式) 2.郵件內容里加確認注冊的鏈接(鏈接里有指定參數(shù)),點擊鏈接跳轉到確認注冊畫面 3.跳轉到確認注冊畫面后把用戶狀態(tài)變?yōu)橐炎?要代碼 發(fā)你郵箱地址 給你發(fā)郵件的代碼,其他的要具體情況具體分析
界面自己寫一下就可以了,把相關的參數(shù)傳進去就可以了。 這個是我以前寫的。用的javamail。 有main方法,測試一下自己的郵件,應該沒問題的。希望可以幫到你。注意導入你需要的javamail.jar的包 -------------------------------------------------------------- package com.fourpane.mail; import java.util.Properties; import javax.mail.Address; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session; import javax.mail.Store; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class TestMail { public static void main(String[] args) { //TestMail.sendMail(); //TestMail.receiveMail(); TestMail.deleteMail(); } /** * send mail */ public static void sendMail() { String host = "smtp.sina.com";//郵件服務器 String from = "xingui5624@sina.com";//發(fā)件人地址 String to = "ilovenumen@vip.sina.com";//接受地址(必須支持pop3協(xié)議) String userName = "xingui5624";//發(fā)件人郵件名稱 String pwd = "******";//發(fā)件人郵件密碼 Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); session.setDebug(true); MimeMessage msg = new MimeMessage(session); try { msg.setFrom(new InternetAddress(from)); msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));//發(fā)送 msg.setSubject("我的測試...........");//郵件主題 msg.setText("測試內容。。。。。。。");//郵件內容 msg.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, userName, pwd);//郵件服務器驗證 transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO)); System.out.println("send ok..........................."); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * receive mail */ public static void receiveMail() { String host = "pop3.sina.com"; String userName = "xingui5624"; String passWord = "******"; Properties props = new Properties(); Session session = Session.getDefaultInstance(props); session.setDebug(true); try { System.out.println("receive..............................."); Store store = session.getStore("pop3"); store.connect(host, userName,passWord);//驗證 Folder folder = store.getFolder("INBOX");//取得收件文件夾 folder.open(Folder.READ_WRITE); Message msg[] = folder.getMessages(); System.out.println("郵件個數(shù):" + msg.length); for(int i=0; imsg.length; i++) { Message message = msg[i]; Address address[] = message.getFrom(); StringBuffer from = new StringBuffer(); /** * 此for循環(huán)是我項目測試用的 */ for(int j=0; jaddress.length; j++) { if (j 0) from.append(";"); from.append(address[j].toString()); } System.out.println(message.getMessageNumber()); System.out.println("來自:" + from.toString()); System.out.println("大?。? + message.getSize()); System.out.println("主題:" + message.getSubject()); System.out.println("時間::" + message.getSentDate()); System.out.println("==================================================="); } folder.close(true);//設置關閉 store.close(); System.out.println("receive over............................"); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * delete mail */ public static void deleteMail() { String host = "pop3.sina.com"; String userName = "xingui5624"; String passWord = "******"; Properties props = new Properties(); //Properties props = System.getProperties();這種方法創(chuàng)建 Porperties 同上 Session session = Session.getDefaultInstance(props); session.setDebug(true); try { System.out.println("begin delete ..........."); Store store = session.getStore("pop3"); store.connect(host, userName, passWord);//驗證郵箱 Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE);//設置我讀寫方式打開 int countOfAll = folder.getMessageCount();//取得郵件個數(shù) int unReadCount = folder.getUnreadMessageCount();//已讀個數(shù) int newOfCount = folder.getNewMessageCount();//未讀個數(shù) System.out.println("總個數(shù):" +countOfAll); System.out.println("已讀個數(shù):" +unReadCount); System.out.println("未讀個數(shù):" +newOfCount); for(int i=1; i=countOfAll; i++) { Message message = folder.getMessage(i); message.setFlag(Flags.Flag.DELETED, true);//設置已刪除狀態(tài)為true if(message.isSet(Flags.Flag.DELETED)) System.out.println("已經(jīng)刪除第"+i+"郵件。。。。。。。。。"); } folder.close(true); store.close(); System.out.println("delete ok................................."); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * reply mail */ public static void replyMail() { //test } } 注意:此實現(xiàn)要求郵箱都支持pop3和smtp協(xié)議?,F(xiàn)在老的網(wǎng)易郵箱都支持(2006年以前注冊的),所以的sina的 qq的都可以,雅虎的部分支持,具體的可以在網(wǎng)上搜下把。 ============================================================================== 還有一種辦法,也是我以前用到的。 其實最簡單的發(fā)郵件方式是用Apache的Common組件中的Email組件,封裝得很不錯。 特簡單。首先從Sun的網(wǎng)站上下載JavaMail框架實現(xiàn),最新的版本是1.4.1。然后是JavaBeans Activation Framework,最新版本1.1.1,JavaMail需要這個框架。不過如果JDK是1.6的話就不用下了。1.6已經(jīng)包括了JavaBeans Activation Framework。 最后從 下載最新的Common Email,版本1.1。 首先在Eclipse中建立一個新的Java工程,然后把JavaMail和Common Email解壓縮,在工程中添加解壓縮出來的所有Jar的引用。 代碼: package org.fourpane.mail; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.HtmlEmail; public class Mail { public static void main(String[] args) { //SimpleEmail email = new SimpleEmail(); HtmlEmail email = new HtmlEmail(); email.setHostName("smtp.163.com");//郵件服務器 email.setAuthentication("xingui5624", "******");//smtp認證的用戶名和密碼 try { email.addTo("xingui5624@163.com");//收信者 email.setFrom("xingui5624@126.com", "******");//發(fā)信者 email.setSubject("xingui5624的測試郵件");//標題 email.setCharset("UTF-8");//編碼格式 email.setMsg("這是一封xingui5624的測試郵件");//內容 email.send();//發(fā)送 System.out.println("send ok.........."); } catch (EmailException e) { e.printStackTrace(); } } } 【如果發(fā)送不成功,可能是你的jar包問題,javamail 的jar可能和jdk1.5以上的j2ee的jar沖突。還有就是可能你的郵箱不支持pop3和smtp協(xié)議?!?/p>
public boolean mainto()
{
boolean flag = true;
//建立郵件會話
Properties pro = new Properties();
pro.put("mail.smtp.host","smtp.qq.com");//存儲發(fā)送郵件的服務器
pro.put("mail.smtp.auth","true"); //通過服務器驗證
Session s =Session.getInstance(pro); //根據(jù)屬性新建一個郵件會話
//s.setDebug(true);
//由郵件會話新建一個消息對象
MimeMessage message = new MimeMessage(s);
//設置郵件
InternetAddress fromAddr = null;
InternetAddress toAddr = null;
try
{
fromAddr = new InternetAddress(451144426+"@qq.com"); //郵件發(fā)送地址
message.setFrom(fromAddr); //設置發(fā)送地址
toAddr = new InternetAddress("12345367@qq.com"); //郵件接收地址
message.setRecipient(Message.RecipientType.TO, toAddr); //設置接收地址
message.setSubject(title); //設置郵件標題
message.setText(content); //設置郵件正文
message.setSentDate(new Date()); //設置郵件日期
message.saveChanges(); //保存郵件更改信息
Transport transport = s.getTransport("smtp");
transport.connect("smtp.qq.com", "451144426", "密碼"); //服務器地址,郵箱賬號,郵箱密碼
transport.sendMessage(message, message.getAllRecipients()); //發(fā)送郵件
transport.close();//關閉
}
catch (Exception e)
{
e.printStackTrace();
flag = false;//發(fā)送失敗
}
return flag;
}
這是一個javaMail的郵件發(fā)送代碼,需要一個mail.jar