導航:首頁 > 編程語言 > javamailjar官網下載

javamailjar官網下載

發布時間:2022-09-17 23:34:12

A. 怎麼使用javamail-android

Javamail-Android配置步驟:
(1)下載Android版本JavaMail包,additional.jar、mail.jar和activation.jar,下載地址:
http://download.csdn.net/detail/suiyuansanren/5299466
(2)在項目與src同一目錄級別下,新建文件夾lib,將下載的3個jar包放入該文件夾
(3)右鍵->Properties->Java Build Path->Libraries,選擇Add External JARs,找到項目下lib目錄的3個jar包

注意:
(1)下面的三個類文件必須在同一個包中;
(2)不要使用你剛剛注冊過的郵箱在程序中發郵件,如果你的163郵箱是剛注冊不久,那你就不要使用「smtp.163.com」。因為你發不出去。剛注冊的郵箱是不會給你這種許可權的,也就是你不能通過驗證。要使用你經常用的郵箱,而且時間比較長的;
(3)mailInfo.setMailServerHost("smtp.163.com");與mailInfo.setFromAddress("[email protected]");這兩句話中,郵箱所在的「域」必須相同。即如果你使用163smtp伺服器,那麼發送郵件地址就必須用163的郵箱,如果不一致的話,是不會發送成功的;

B. myeclipse 8.5 有沒有 javamail

不清除,你可以去下載個javamail.jar包。。。放到項目下面。。就可以了

C. 求 javamail jar 郵箱 331815773@qq.com

網路, 到官網下 。 其它地方也有很多例子,附帶有 jar .

D. 用java寫的郵件發送程序

界面自己寫一下就可以了,把相關的參數傳進去就可以了。 這個是我以前寫的。用的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 = "[email protected]";//發件人地址 String to = "[email protected]";//接受地址(必須支持pop3協議) String userName = "xingui5624";//發件人郵件名稱 String pwd = "******";//發件人郵件密碼 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));//發送 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("郵件個數:" + msg.length); for(int i=0; i<msg.length; i++) { Message message = msg[i]; Address address[] = message.getFrom(); StringBuffer from = new StringBuffer(); /** * 此for循環是我項目測試用的 */ for(int j=0; j<address.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();這種方法創建 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();//取得郵件個數 int unReadCount = folder.getUnreadMessageCount();//已讀個數 int newOfCount = folder.getNewMessageCount();//未讀個數 System.out.println("總個數:" +countOfAll); System.out.println("已讀個數:" +unReadCount); System.out.println("未讀個數:" +newOfCount); for(int i=1; i<=countOfAll; i++) { Message message = folder.getMessage(i); message.setFlag(Flags.Flag.DELETED, true);//設置已刪除狀態為true if(message.isSet(Flags.Flag.DELETED)) System.out.println("已經刪除第"+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 } } 注意:此實現要求郵箱都支持pop3和smtp協議。現在老的網易郵箱都支持(2006年以前注冊的),所以的sina的 qq的都可以,雅虎的部分支持,具體的可以在網上搜下把。 ============================================================================== 還有一種辦法,也是我以前用到的。 其實最簡單的發郵件方式是用Apache的Common組件中的Email組件,封裝得很不錯。 特簡單。首先從Sun的網站上下載JavaMail框架實現,最新的版本是1.4.1。然後是JavaBeans Activation Framework,最新版本1.1.1,JavaMail需要這個框架。不過如果JDK是1.6的話就不用下了。1.6已經包括了JavaBeans Activation Framework。 最後從 http://commons.apache.org/email/ 下載最新的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("[email protected]");//收信者 email.setFrom("[email protected]", "******");//發信者 email.setSubject("xingui5624的測試郵件");//標題 email.setCharset("UTF-8");//編碼格式 email.setMsg("這是一封xingui5624的測試郵件");//內容 email.send();//發送 System.out.println("send ok.........."); } catch (EmailException e) { e.printStackTrace(); } } } 【如果發送不成功,可能是你的jar包問題,javamail 的jar可能和jdk1.5以上的j2ee的jar沖突。還有就是可能你的郵箱不支持pop3和smtp協議。】

求採納

E. 幫忙介紹一本電子書,裡面有比較詳細的JavaMaiL的解說

目前好像還真是沒有,我也在找呢,在網上看到篇文章,不知能不能幫你:
JavaMail API詳解
摘要:
JavaMail API是讀取、撰寫、發送電子信息的可選包。我們可用它來建立如Eudora、Foxmail、MS Outlook Express一般的郵件用戶代理程序(Mail User Agent,簡稱MUA)。讓我們看看JavaMail API是如何提供信息訪問功能的吧!JavaMail API被設計用於以不依賴協議的方式去發送和接收電子信息,文中著重:如何以不依賴於協議的方式發送接收電子信息,這也是本文所要描述的.

版權聲明:本文可以自由轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明
作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)
原文:http://www.matrix.org.cn/resource/article/44/44101_JavaMail.html
關鍵字:java,mail,pop,smtp

一、JavaMail API簡介
JavaMail API是讀取、撰寫、發送電子信息的可選包。我們可用它來建立如Eudora、Foxmail、MS Outlook Express一般的郵件用戶代理程序(Mail User Agent,簡稱MUA)。而不是像sendmail或者其它的郵件傳輸代理(Mail Transfer Agent,簡稱MTA)程序那樣可以傳送、遞送、轉發郵件。從另外一個角度來看,我們這些電子郵件用戶日常用MUA程序來讀寫郵件,而MUA依賴著MTA處理郵件的遞送。
在清楚了到MUA與MTA之間的關系後,讓我們看看JavaMail API是如何提供信息訪問功能的吧!JavaMail API被設計用於以不依賴協議的方式去發送和接收電子信息,這個API被分為兩大部分:

基本功能:如何以不依賴於協議的方式發送接收電子信息,這也是本文所要描述的,不過在下文中,大家將看到這只是一廂情願而已。
第二個部分則是依賴特定協議的,比如SMTP、POP、IMAP、NNTP協議。在這部分的JavaMail API是為了和伺服器通訊,並不在本文的內容中。

二、相關協議一覽
在我們步入JavaMail API之前,先看一下API所涉及的協議。以下便是大家日常所知、所樂於使用的4大信息傳輸協議:
SMTP
POP
IMAP
MIME
當然,上面的4個協議,並不是全部,還有NNTP和其它一些協議可用於傳輸信息,但是由於不常用到,所以本文便不提及了。理解這4個基本的協議有助於我們更好的使用JavaMail API。然而JavaMail API是被設計為與協議無關的,目前我們並不能克服這些協議的束縛。確切的說,如果我們使用的功能並不被我們選擇的協議支持,那麼JavaMail API並不可能如魔術師一樣神奇的賦予我們這種能力。

1.SMTP
簡單郵件傳輸協議定義了遞送郵件的機制。在下文中,我們將使用基於Java-Mail的程序與公司或者ISP的SMTP伺服器進行通訊。這個SMTP伺服器將郵件轉發到接收者的SMTP伺服器,直至最後被接收者通過POP或者IMAP協議獲取。這並不需要SMTP伺服器使用支持授權的郵件轉發,但是卻的確要注意SMTP伺服器的正確設置(SMTP伺服器的設置與JavaMail API無關)。

2.POP
POP是一種郵局協議,目前為第3個版本,即眾所周知的POP3。POP定義了一種用戶如何獲得郵件的機制。它規定了每個用戶使用一個單獨的郵箱。大多數人在使用POP時所熟悉的功能並非都被支持,例如查看郵箱中的新郵件數量。而這個功能是微軟的Outlook內建的,那麼就說明微軟Outlook之類的郵件客戶端軟體是通過查詢最近收到的郵件來計算新郵件的數量來實現前面所說的功能。因此在我們使用JavaMail API時需要注意,當需要獲得如前面所講的新郵件數量之類的信息時,我們不得不自己進行計算。

3.IMAP
IMAP使用在接收信息的高級協議,目前版本為第4版,所以也被稱為IMAP4。需要注意的是在使用IMAP時,郵件伺服器必須支持該協議。從這個方面講,我們並不能完全使用IMAP來替代POP,不能期待IMAP在任何地方都被支持。假如郵件伺服器支持IMAP,那麼我們的郵件程序將能夠具有以下被IMAP所支持的特性:每個用戶在伺服器上可具有多個目錄,這些目錄能在多個用戶之間共享。
其與POP相比高級之處顯而易見,但是在嘗試採取IMAP時,我們認識到它並不是十分完美的:由於IMAP需要從其它伺服器上接收新信息,將這些信息遞送給用戶,維護每個用戶的多個目錄,這都為郵件伺服器帶來了高負載。並且IMAP與POP的一個不同之處是POP用戶在接收郵件時將從郵件伺服器上下載郵件,而IMAP允許用戶直接訪問郵件目錄,所以在郵件伺服器進行備份作業時,由於每個長期使用此郵件系統的用戶所用的郵件目錄會佔有很大的空間,這將直接導致郵件伺服器上磁碟空間暴漲。

4.MIME
MIME並不是用於傳送郵件的協議,它作為多用途郵件的擴展定義了郵件內容的格式:信息格式、附件格式等等。一些RFC標准都涉及了MIME:RFC 822, RFC 2045, RFC 2046, RFC 2047,有興趣的Matrixer可以閱讀一下。而作為JavaMail API的開發者,我們並不需關心這些格式定義,但是這些格式被用在了程序中。

5.NNTP和其它的第三方協議
正因為JavaMail API在設計時考慮到與第三方協議實現提供商之間的分離,故我們可以很容易的添加一些第三方協議。SUN維護著一個第三方協議實現提供商的列表:http://java.sun.com/procts/javamail/Third_Party.html,通過此列表我們可以找到所需要的而又不被SUN提供支持的第三方協議:比如NNTP這個新聞組協議和S/MIME這個安全的MIME協議。

三、安裝
1.安裝JavaMail
為了使用JavaMail API,需要從http://java.sun.com/procts/javamail/downloads/index.html下載文件名格式為javamail-[version].zip的文件(這個文件中包括了JavaMail實現),並將其中的mail.jar文件添加到CLASSPATH中。這個實現提供了對SMTP、IMAP4、POP3的支持。
注意:在安裝JavaMail實現之後,我們將在demo目錄中發現許多有趣的簡單實常式序。
在安裝了JavaMail之後,我們還需要安裝JavaBeans Activation Framework,因為這個框架是JavaMail API所需要的。如果我們使用J2EE的話,那麼我們並無需單獨下載JavaMail,因為它存在於J2EE.jar中,只需將J2EE.jar加入到CLASSPATH即可。

2.安裝JavaBeans Activation Framework
從http://java.sun.com/procts/javabeans/glasgow/jaf.html下載JavaBeans Activation Framework,並將其添加到CLASSPATH中。此框架增加了對任何數據塊的分類、以及對它們的處理的特性。這些特性是JavaMail API需要的。雖然聽起來這些特性非常模糊,但是它對於我們的JavaMail API來說只是提供了基本的MIME類型支持。
到此為止,我們應當把mail.jar和activation.jar都添加到了CLASSPATH中。
當然如果從方便的角度講,直接把這兩個Jar文件復制到JRE目錄的lib/ext目錄中也可以。

四、初次認識JavaMail API
1.了解我們的JavaMail環境
A.縱覽JavaMail核心類結構
打開JavaMail.jar文件,我們將發現在javax.mail的包下面存在著一些核心類:Session、Message、Address、Authenticator、Transport、Store、Folder。而且在javax.mail.internet包中還有一些常用的子類。
B.Session
Session類定義了基本的郵件會話。就像Http會話那樣,我們進行收發郵件的工作都是基於這個會話的。Session對象利用了java.util.Properties對象獲得了郵件伺服器、用戶名、密碼信息和整個應用程序都要使用到的共享信息。
Session類的構造方法是私有的,所以我們可以使用Session類提供的getDefaultInstance()這個靜態工廠方法獲得一個默認的Session對象:

Properties props = new Properties();
// fill props with any information
Session session = Session.getDefaultInstance(props, null);

或者使用getInstance()這個靜態工廠方法獲得自定義的Session:

Properties props = new Properties();
// fill props with any information
Session session = Session.getInstance(props, null);

從上面的兩個例子中不難發現,getDefaultInstance()和getInstance()方法的第二個參數都是null,這是因為在上面的例子中並沒有使用到郵件授權,下文中將對授權進行詳細介紹。
從很多的實例看,在對mail server進行訪問的過程中使用共享的Session是足夠的,即使是工作在多個用戶郵箱的模式下也不例外。

C.Message
當我們建立了Session對象後,便可以被發送的構造信息體了。在這里SUN提供了Message類型來幫助開發者完成這項工作。由於Message是一個抽象類,大多數情況下,我們使用javax.mail.internet.MimeMessage這個子類,該類是使用MIME類型、MIME信息頭的郵箱信息。信息頭只能使用US-ASCII字元,而非ASCII字元將通過編碼轉換為ASCII的方式使用。
為了建立一個MimeMessage對象,我們必須將Session對象作為MimeMessage構造方法的參數傳入:

MimeMessage message = new MimeMessage(session);

注意:對於MimeMessage類來講存在著多種構造方法,比如使用輸入流作為參數的構造方法。

在建立了MimeMessage對象後,我們需要設置它的各個part,對於MimeMessage類來說,這些part就是MimePart介面。最基本的設置信息內容的方法就是通過表示信息內容和米么類型的參數調用setContent()方法:

message.setContent("Hello", "text/plain");

然而,如果我們所使用的MimeMessage中信息內容是文本的話,我們便可以直接使用setText()方法來方便的設置文本內容。

message.setText("Hello");

前面所講的兩種方法,對於文本信息,後者更為合適。而對於其它的一些信息類型,比如HTML信息,則要使用前者。
別忘記了,使用setSubject()方法對郵件設置郵件主題:

message.setSubject("First");

D.Address
到這里,我們已經建立了Session和Message,下面將介紹如何使用郵件地址類:Address。像Message一樣,Address類也是一個抽象類,所以我們將使用javax.mail.internet.InternetAddress這個子類。
通過傳入代表郵件地址的字元串,我們可以建立一個郵件地址類:

Address address = new InternetAddress("[email protected]");

如果要在郵件地址後面增加名字的話,可以通過傳遞兩個參數:代表郵件地址和名字的字元串來建立一個具有郵件地址和名字的郵件地址類:

Address address = new InternetAddress("[email protected]", "George Bush");

本文在這里所講的郵件地址類是為了設置郵件信息的發信人和收信人而准備的,在建立了郵件地址類後,我們通過message的setFrom()和setReplyTo()兩種方法設置郵件的發信人:

message.setFrom(address);
message.setReplyTo(address);

若在郵件中存在多個發信人地址,我們可用addForm()方法增加發信人:

Address address[] = ...;
message.addFrom(address);

為了設置收信人,我們使用addRecipient()方法增加收信人,此方法需要使用Message.RecipientType的常量來區分收信人的類型:

message.addRecipient(type, address)

下面是Message.RecipientType的三個常量:
Message.RecipientType.TO
Message.RecipientType.CC
Message.RecipientType.BCC
因此,如果我們要發送郵件給總統,並發用一個副本給第一夫人的話,下面的方法將被用到:

Address toAddress = new InternetAddress("[email protected]");
Address ccAddress = new InternetAddress("[email protected]");
message.addRecipient(Message.RecipientType.TO, toAddress);
message.addRecipient(Message.RecipientType.CC, ccAddress);

JavaMail API並沒有提供檢查郵件地址有效性的機制。當然我們可以自己完成這個功能:驗證郵件地址的字元是否按照RFC822規定的格式書寫或者通過DNS伺服器上的MX記錄驗證等。

E.Authenticator
像java.net類那樣,JavaMail API通過使用授權者類(Authenticator)以用戶名、密碼的方式訪問那些受到保護的資源,在這里「資源」就是指郵件伺服器。在javax.mail包中可以找到這個JavaMail的授權者類(Authenticator)。
在使用Authenticator這個抽象類時,我們必須採用繼承該抽象類的方式,並且該繼承類必須具有返回PasswordAuthentication對象(用於存儲認證時要用到的用戶名、密碼)getPasswordAuthentication()方法。並且要在Session中進行注冊,使Session能夠了解在認證時該使用哪個類。
下面代碼片斷中的MyAuthenticator就是一個Authenticator的子類。

Properties props = new Properties();
// fill props with any information
Authenticator auth = new MyAuthenticator();
Session session = Session.getDefaultInstance(props, auth);

F.Transport
在發送信息時,Transport類將被用到。這個類實現了發送信息的協議(通稱為SMTP),此類是一個抽象類,我們可以使用這個類的靜態方法send()來發送消息:

Transport.send(message);

當然,方法是多樣的。我們也可由Session獲得相應協議對應的Transport實例。並通過傳遞用戶名、密碼、郵件伺服器主機名等參數建立與郵件伺服器的連接,並使用sendMessage()方法將信息發送,最後關閉連接:

message.saveChanges(); // implicit with send()
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();

評論:上面的方法是一個很好的方法,尤其是在我們在同一個郵件伺服器上發送多個郵件時。因為這時我們將在連接郵件伺服器後連續發送郵件,然後再關閉掉連接。send()這個基本的方法是在每次調用時進行與郵件伺服器的連接的,對於在同一個郵件伺服器上發送多個郵件來講可謂低效的方式。
注意:如果需要在發送郵件過程中監控mail命令的話,可以在發送前設置debug標志:

session.setDebug(true)。

G.Store和Folder
接收郵件和發送郵件很類似都要用到Session。但是在獲得Session後,我們需要從Session中獲取特定類型的Store,然後連接到Store,這里的Store代表了存儲郵件的郵件伺服器。在連接Store的過程中,極有可能需要用到用戶名、密碼或者Authenticator。

// Store store = session.getStore("imap");
Store store = session.getStore("pop3");
store.connect(host, username, password);

在連接到Store後,一個Folder對象即目錄對象將通過Store的getFolder()方法被返回,我們可從這個Folder中讀取郵件信息:

Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();

上面的例子首先從Store中獲得INBOX這個Folder(對於POP3協議只有一個名為INBOX的Folder有效),然後以只讀(Folder.READ_ONLY)的方式打開Folder,最後調用Folder的getMessages()方法得到目錄中所有Message的數組。

注意:對於POP3協議只有一個名為INBOX的Folder有效,而對於IMAP協議,我們可以訪問多個Folder(想想前面講的IMAP協議)。而且SUN在設計Folder的getMessages()方法時採取了很智能的方式:首先接收新郵件列表,然後再需要的時候(比如讀取郵件內容)才從郵件伺服器讀取郵件內容。
在讀取郵件時,我們可以用Message類的getContent()方法接收郵件或是writeTo()方法將郵件保存,getContent()方法只接收郵件內容(不包含郵件頭),而writeTo()方法將包括郵件頭。

System.out.println(((MimeMessage)message).getContent());

在讀取郵件內容後,別忘記了關閉Folder和Store。

folder.close(aBoolean);
store.close();

傳遞給Folder.close()方法的boolean 類型參數表示是否在刪除操作郵件後更新Folder。

H.繼續向前進!
在講解了以上的七個Java Mail核心類定義和理解了簡單的代碼片斷後,下文將詳細講解怎樣使用這些類實現JavaMail API所要完成的高級功能。

五、使用JavaMail API
在明確了JavaMail API的核心部分如何工作後,本人將帶領大家學習一些使用Java Mail API任務案例。
1.發送郵件
在獲得了Session後,建立並填入郵件信息,然後發送它到郵件伺服器。這便是使用Java Mail API發送郵件的過程,在發送郵件之前,我們需要設置SMTP伺服器:通過設置Properties的mail.smtp.host屬性。

String host = ...;
String from = ...;
String to = ...;

// Get system properties
Properties props = System.getProperties();

// Setup mail server
props.put("mail.smtp.host", host);

// Get session
Session session = Session.getDefaultInstance(props, null);

// Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Hello JavaMail");
message.setText("Welcome to JavaMail");
// Send message
Transport.send(message);

由於建立郵件信息和發送郵件的過程中可能會拋出異常,所以我們需要將上面的代碼放入到try-catch結構塊中。

2.接收郵件
為了在讀取郵件,我們獲得了session,並且連接到了郵箱的相應store,打開相應的Folder,然後得到我們想要的郵件,當然別忘記了在結束時關閉連接。

String host = ...;
String username = ...;
String password = ...;

// Create empty properties
Properties props = new Properties();

// Get session
Session session = Session.getDefaultInstance(props, null);

// Get the store
Store store = session.getStore("pop3");
store.connect(host, username, password);

// Get folder
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);

// Get directory
Message message[] = folder.getMessages();

for (int i=0, n=message.length; i<n; i++) {
System.out.println(i + ": " + message[i].getFrom()[0]
+ "\t" + message[i].getSubject());
}

// Close connection
folder.close(false);
store.close();

上面的代碼所作的是從郵箱中讀取每個郵件,並且顯示郵件的發信人地址和主題。從技術角度講,這里存在著一個異常的可能:當發信人地址為空時,getFrom()[0]將拋出異常。

下面的代碼片斷有效的說明了如何讀取郵件內容,在顯示每個郵件發信人和主題後,將出現用戶提示從而得到用戶是否讀取該郵件的確認,如果輸入YES的話,我們可用Message.writeTo(java.io.OutputStream os)方法將郵件內容輸出到控制台上,關於Message.writeTo()的具體用法請看JavaMail API。

BufferedReader reader = new BufferedReader (
new InputStreamReader(System.in));

// Get directory
Message message[] = folder.getMessages();
for (int i=0, n=message.length; i<n; i++) {
System.out.println(i + ": " + message[i].getFrom()[0]
+ "\t" + message[i].getSubject());

System.out.println("Do you want to read message? " +
"[YES to read/QUIT to end]");
String line = reader.readLine();
if ("YES".equals(line)) {
message[i].writeTo(System.out);
} else if ("QUIT".equals(line)) {
break;
}
}

3.刪除郵件和標志
設置與message相關的Flags是刪除郵件的常用方法。這些Flags表示了一些系統定義和用戶定義的不同狀態。在Flags類的內部類Flag中預定義了一些標志:
Flags.Flag.ANSWERED
Flags.Flag.DELETED
Flags.Flag.DRAFT
Flags.Flag.FLAGGED
Flags.Flag.RECENT
Flags.Flag.SEEN
Flags.Flag.USER
但需要在使用時注意的:標志存在並非意味著這個標志被所有的郵件伺服器所支持。例如,對於刪除郵件的操作,POP協議不支持上面的任何一個。所以要確定哪些標志是被支持的——通過訪問一個已經打開的Folder對象的getPermanetFlags()方法,它將返回當前被支持的Flags類對象。
刪除郵件時,我們可以設置郵件的DELETED標志:

message.setFlag(Flags.Flag.DELETED, true);

但是首先要採用READ_WRITE的方式打開Folder:

folder.open(Folder.READ_WRITE);

在對郵件進行刪除操作後關閉Folder時,需要傳遞一個true作為對刪除郵件的擦除確認。

folder.close(true);

Folder類中另一種用於刪除郵件的方法expunge()也同樣可刪除郵件,但是它並不為sun提供的POP3實現支持,而其它第三方提供的POP3實現支持或者並不支持這種方法。
另外,介紹一種檢查某個標志是否被設置的方法:Message.isSet(Flags.Flag flag)方法,其中參數為被檢查的標志。

4.郵件認證
我們在前面已經學會了如何使用Authenticator類來代替直接使用用戶名和密碼這兩字元串作為Session.getDefaultInstance()或者Session.getInstance()方法的參數。在前面的小試牛刀後,現在我們將了解到全面認識一下郵件認證。
我們在此取代了直接使用郵件伺服器主機名、用戶名、密碼這三個字元串作為連接到POP3 Store的方式,使用存儲了郵件伺服器主機名信息的屬性文件,並在獲得Session時傳入自定義的Authenticator實例:

// Setup properties
Properties props = System.getProperties();
props.put("mail.pop3.host", host);

// Setup authentication, get session
Authenticator auth = new PopupAuthenticator();
Session session = Session.getDefaultInstance(props, auth);

// Get the store
Store store = session.getStore("pop3");
store.connect();

PopupAuthenticator類繼承了抽象類Authenticator,並且通過重載Authenticator類的getPasswordAuthentication()方法返回PasswordAuthentication類對象。而getPasswordAuthentication()方法的參數param是以逗號分割的用戶名、密碼組成的字元串。

import javax.mail.*;
import java.util.*;

public class PopupAuthenticator extends Authenticator {

public PasswordAuthentication getPasswordAuthentication(String param) {
String username, password;

StringTokenizer st = new StringTokenizer(param, ",");
username = st.nextToken();
password = st.nextToken();

return new PasswordAuthentication(username, password);
}

}

5.回復郵件
回復郵件的方法很簡單:使用Message類的reply()方法,通過配置回復郵件的收件人地址和主題(如果沒有提供主題的話,系統將默認將「Re:」作為郵件的主體),這里不需要設置任何的郵件內容,只要復制發信人或者reply-to到新的收件人。而reply()方法中的boolean參數表示是否將郵件回復給發送者(參數值為false),或是恢復給所有人(參數值為true)。
補充一下,reply-to地址需要在發信時使用setReplyTo()方法設置。

MimeMessage reply = (MimeMessage)message.reply(false);
reply.setFrom(new InternetAddress("[email protected]"));
reply.setText("Thanks");
Transport.send(reply);

6.轉發郵件
轉發郵件的過程不如前面的回復郵件那樣簡單,它將建立一個轉發郵件,這並非一個方法就能做到。
每個郵件是由多個部分組成,每個部分稱為一個郵件體部分,是一個BodyPart類對象,對於MIME類型郵件來講就是MimeBodyPart類對象。這些郵件體包含在成為Multipart的容器中對於MIME類型郵件來講就是MimeMultiPart類對象。在轉發郵件時,我們建立一個文字郵件體部分和一個被轉發的文字郵件體部分,然後將這兩個郵件體放到一個Multipart中。說明一下,復制一個郵件內容到另一個郵件的方法是僅復制它的DataHandler(數據處理者)即可。這是由JavaBeans Activation Framework定義的一個類,它提供了對郵件內容的操作命令的訪問、管理了郵件內容操作,是不同的數據源和數據格式之間的一致性介面。

// Create the message to forward
Message forward = new MimeMessage(session);

// Fill in header
forward.setSubject("Fwd: " + message.getSubject());
forward.setFrom(new InternetAddress(from));
forward.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));

// Create your new message part
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(
"Here you go with the original message:\n\n");

// Create a multi-part to combine the parts
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);

// Create and fill part for the forwarded content
messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(message.getDataHandler());

// Add part to multi part
multipart.addBodyPart(messageBodyPart);

// Associate multi-part with message
forward.setContent(multipart);

// Send message
Tran

F. JavaMail所需jar包有哪些

我這兩天剛試過這一塊內容,做了一個很簡單的測試來學習一下,新建的maven項目,專我用到了兩個屬jar包:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>


<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
萌新表示我也不清楚那幾個jar包的區別,我找了好幾個網站參考代碼,我先導入了你上面說到的幾個jar包,嘗試運行兩三份不一樣的寫法的代碼,不同的寫法用到的jar包不一樣。沒有用到的jar包就被我刪除了,最後就剩下2個。因為我只是做簡單的測試,所以代碼很簡單,就只用到了這兩個jar包,可能寫的復雜的話就還需要用到別的jar包吧。你可以自己試試看。

G. java jar

path只是查找可執行程序的路徑,與 JVM 載入類文件的路徑無關。
你還應該設置classpath,classpath還可以在執行的時候作為參數添加
java -classpath ......

H. java 發送郵件 需要哪些jar包

使用發送郵件需要用到mail.jar和activtion.jar兩個包。

該類實現了較完整的郵件發送功能,包括以HTML格式發送,添加附件和抄送人。下面是具體的代碼:

packagecn.cgw.util.mail;

importjava.util.Properties;

importjavax.activation.DataHandler;
importjavax.activation.FileDataSource;
importjavax.mail.Address;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;


publicclassMail{

privateMimeMessagemimeMsg;//MIME郵件對象
privateSessionsession;//郵件會話對象
privatePropertiesprops;//系統屬性
privatebooleanneedAuth=false;//smtp是否需要認證
//smtp認證用戶名和密碼
privateStringusername;
privateStringpassword;
privateMultipartmp;//Multipart對象,郵件內容,標題,附件等內容均添加到其中後再生成MimeMessage對象

/**
*Constructor
*@paramsmtp郵件發送伺服器
*/
publicMail(Stringsmtp){
setSmtpHost(smtp);
createMimeMessage();
}

/**
*設置郵件發送伺服器
*@paramhostNameString
*/
publicvoidsetSmtpHost(StringhostName){
System.out.println("設置系統屬性:mail.smtp.host="+hostName);
if(props==null)
props=System.getProperties();//獲得系統屬性對象
props.put("mail.smtp.host",hostName);//設置SMTP主機
}


/**
*創建MIME郵件對象
*@return
*/
()
{
try{
System.out.println("准備獲取郵件會話對象!");
session=Session.getDefaultInstance(props,null);//獲得郵件會話對象
}
catch(Exceptione){
System.err.println("獲取郵件會話對象時發生錯誤!"+e);
returnfalse;
}

System.out.println("准備創建MIME郵件對象!");
try{
mimeMsg=newMimeMessage(session);//創建MIME郵件對象
mp=newMimeMultipart();

returntrue;
}catch(Exceptione){
System.err.println("創建MIME郵件對象失敗!"+e);
returnfalse;
}
}

/**
*設置SMTP是否需要驗證
*@paramneed
*/
publicvoidsetNeedAuth(booleanneed){
System.out.println("設置smtp身份認證:mail.smtp.auth="+need);
if(props==null)props=System.getProperties();
if(need){
props.put("mail.smtp.auth","true");
}else{
props.put("mail.smtp.auth","false");
}
}

/**
*設置用戶名和密碼
*@paramname
*@parampass
*/
publicvoidsetNamePass(Stringname,Stringpass){
username=name;
password=pass;
}

/**
*設置郵件主題
*@parammailSubject
*@return
*/
publicbooleansetSubject(StringmailSubject){
System.out.println("設置郵件主題!");
try{
mimeMsg.setSubject(mailSubject);
returntrue;
}
catch(Exceptione){
System.err.println("設置郵件主題發生錯誤!");
returnfalse;
}
}

/**
*設置郵件正文
*@parammailBodyString
*/
publicbooleansetBody(StringmailBody){
try{
BodyPartbp=newMimeBodyPart();
bp.setContent(""+mailBody,"text/html;charset=GBK");
mp.addBodyPart(bp);

returntrue;
}catch(Exceptione){
System.err.println("設置郵件正文時發生錯誤!"+e);
returnfalse;
}
}
/**
*添加附件
*@paramfilenameString
*/
publicbooleanaddFileAffix(Stringfilename){

System.out.println("增加郵件附件:"+filename);
try{
BodyPartbp=newMimeBodyPart();
FileDataSourcefileds=newFileDataSource(filename);
bp.setDataHandler(newDataHandler(fileds));
bp.setFileName(fileds.getName());

mp.addBodyPart(bp);

returntrue;
}catch(Exceptione){
System.err.println("增加郵件附件:"+filename+"發生錯誤!"+e);
returnfalse;
}
}

/**
*設置發信人
*@paramfromString
*/
publicbooleansetFrom(Stringfrom){
System.out.println("設置發信人!");
try{
mimeMsg.setFrom(newInternetAddress(from));//設置發信人
returntrue;
}catch(Exceptione){
returnfalse;
}
}
/**
*設置收信人
*@paramtoString
*/
publicbooleansetTo(Stringto){
if(to==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
returntrue;
}catch(Exceptione){
returnfalse;
}
}

/**
*設置抄送人
*@paramtoString
*/
publicbooleansetCopyTo(Stringto)
{
if(to==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(to));
returntrue;
}
catch(Exceptione)
{returnfalse;}
}

/**
*發送郵件
*/
publicbooleansendOut()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在發送郵件....");

SessionmailSession=Session.getInstance(props,null);
Transporttransport=mailSession.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),username,password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));
//transport.send(mimeMsg);

System.out.println("發送郵件成功!");
transport.close();

returntrue;
}catch(Exceptione){
System.err.println("郵件發送失敗!"+e);
returnfalse;
}
}

/**
*調用sendOut方法完成郵件發送
*@paramsmtp
*@paramfrom
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@returnboolean
*/
publicstaticbooleansend(Stringsmtp,Stringfrom,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

/**
*調用sendOut方法完成郵件發送,帶抄送
*@paramsmtp
*@paramfrom
*@paramto
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@returnboolean
*/
publicstaticbooleansendAndCc(Stringsmtp,Stringfrom,Stringto,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setCopyTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

/**
*調用sendOut方法完成郵件發送,帶附件
*@paramsmtp
*@paramfrom
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@paramfilename附件路徑
*@return
*/
publicstaticbooleansend(Stringsmtp,Stringfrom,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword,Stringfilename){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.addFileAffix(filename))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

/**
*調用sendOut方法完成郵件發送,帶附件和抄送
*@paramsmtp
*@paramfrom
*@paramto
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@paramfilename
*@return
*/
publicstaticbooleansendAndCc(Stringsmtp,Stringfrom,Stringto,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword,Stringfilename){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.addFileAffix(filename))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setCopyTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

}

I. 如何使用JavaMail,需要准備什麼

當然需要聯網
你需要下載兩個jar包(activation.jar,mail.jar)
然後在寫類測試就好了
有個問題是你所測試的發信郵箱需要支持pop3協議並已經開通此服務

網上的例子很多
google下

J. 誰能給我個能用的javamail實例啊

//重新編輯了,你要做的就只要改下面三個地方:
//a需要你的tom郵箱帳號(僅@符號前面的)
//b需要你的tom郵箱密碼
//c要發送的地址
//並且下載javamail和JAF兩個包,只要取其中的mail.jar和activaction.jar加入到庫裡面
//兩個包到java.sun.com官方網站去搜,絕對有
//如果還不能發送盡管往我的郵箱塞垃圾[email protected]
//已經過我多次測試,代碼很少,當然你也可以更改郵件伺服器等
package mymail;
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
class PopupAuthenticator extends Authenticator {
public static final String mailuser="需要你的tom郵箱帳號(僅@符號前面的)";
public static final String password="需要你的tom郵箱密碼";
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mailuser,password);
}
}
public class Class1{
public static void main(String args[]) throws MessagingException, UnsupportedEncodingException{
Properties props = new Properties();
props.put("mail.smtp.host","smtp.tom.com");
props.put("mail.smtp.auth","true");
PopupAuthenticator auth = new PopupAuthenticator();
Session session = Session.getInstance(props, auth);
MimeMessage message = new MimeMessage(session);
Address addressFrom = new InternetAddress(PopupAuthenticator.mailuser+"@tom.com", "George Bush");
Address addressTo = new InternetAddress("要發送的地址", "George Bush");
message.setText("郵件發送成功");
message.setSubject("Javamal最終測試");
message.setFrom(addressFrom);
message.addRecipient(Message.RecipientType.TO,addressTo);
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect("smtp.tom.com", PopupAuthenticator.mailuser,PopupAuthenticator.password);
transport.send(message);
transport.close();
}
}

閱讀全文

與javamailjar官網下載相關的資料

熱點內容
如何提高網路扶貧的效果 瀏覽:654
飛車軟體文件夾叫什麼 瀏覽:242
刷ec用什麼編程器 瀏覽:765
方菱數控u盤文件格式 瀏覽:260
編程為什麼輸出兩個變數 瀏覽:490
衛星大鍋2017用升級嗎 瀏覽:113
玉米win10系統下載 瀏覽:134
fgo技能升級減cd嗎 瀏覽:129
什麼記賬app免費好用 瀏覽:441
網路檢測可以檢測到什麼 瀏覽:504
sip協議教程 瀏覽:832
編程哪裡可以接項目 瀏覽:119
孤島驚魂win10 瀏覽:246
網路HRV是什麼意思 瀏覽:918
word框中打勾 瀏覽:577
tcl筆試題java 瀏覽:467
win10怎麼登錄安全模式 瀏覽:679
除了archdaily還有什麼網站 瀏覽:567
數控下料圓形怎麼編程 瀏覽:785
安裝游戲在文件管理找不到怎麼辦 瀏覽:216

友情鏈接