javaMail【Z】
commons-email-1.1.jar: 這是Apache組織下的一個專案,主要就是對java的郵件功能進行了封裝,用起來更加方便,簡單。
接下來我們就說說這個jar包。
首先肯定得下載commons-email-1.1.jar,並下載mail.jar和activation.jar(它們可以從sun的網站上下載,從下載的javamail和jaf中找到)。
如果沒有mail.jar,則會有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Message 這樣的錯誤提示。
如果沒有activation.jar,則會有:Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource 這樣的錯誤提示。
下面是一個簡單的測試。
- Java程式碼
- import org.apache.commons.mail.EmailException;
- import org.apache.commons.mail.SimpleEmail;
- public class Send
- {
- public Send()
- {
- }
- public static void main(String[] args)
- {
- send();
- }
- public static void send()
- {
- SimpleEmail email = new SimpleEmail();
- email.setTLS(true );
- email.setHostName("smtp.gmail.com" );
- email.setAuthentication("***@gmail.com" , "***" ); //使用者名稱和密碼
- try
- {
- email.addTo("lifangxin2050@163.com" ); //接收方
- email.setFrom("lifangxin2050@gmail.com" ); //傳送方
- email.setSubject("Java Mail Test" ); //標題
- email.setMsg("Just a simple send test ." ); //內容
- email.send();
- } catch (EmailException e) {
- e.printStackTrace();
- }
- }
- }
- import org.apache.commons.mail.EmailException;
- import org.apache.commons.mail.SimpleEmail;
- public class Send
- {
- public Send()
- {
- }
- public static void main(String[] args)
- {
- send();
- }
- public static void send()
- {
- SimpleEmail email = new SimpleEmail();
- email.setTLS(true ); //是否TLS校驗,,某些郵箱需要TLS安全校驗,同理有SSL校驗
- // email.setSSL(true);
- email.setHostName("smtp.gmail.com" );
- email.setAuthentication("***@gmail.com" , "***" ); //使用者名稱和密碼
- try
- {
- email.addTo("lifangxin2050@163.com" ); //接收方
- email.addCc("ss327@163.com" ); //抄送方
- email.addBcc("ss377@163.com" ); //祕密抄送方
- email.setSubject("Java Mail Test" ); //標題
- email.setMsg("Just a simple send test ." ); //內容
- email.send();
- } catch (EmailException e) {
- e.printStackTrace();
- }
- }
- }
上面的郵件標題和內容用的都是英文,如果改為中文呢?我試了一下,結果郵件標題不是亂碼,而郵件內容則中文部分是亂碼。設定其charSet為GB2312或者UTF-8後就可以傳送中文郵件了,顯示正常了。如下面的程式碼。
- Java程式碼
- import org.apache.commons.mail.EmailException;
- import org.apache.commons.mail.SimpleEmail;
- public class Send
- {
- public Send()
- {
- }
- public static void main(String[] args)
- {
- send();
- }
- public static void send()
- {
- SimpleEmail email = new SimpleEmail();
- email.setTLS(true );
- email.setHostName("smtp.gmail.com" );
- email.setAuthentication("lifangxin2050@gmail.com" , "sdzzczqqyyxy" );
- try
- {
- email.addTo("lifangxin2050@163.com" );
- email.setFrom("lifangxin2050@gmail.com" ); //我方
- email.setSubject("Java傳送郵件測試" ); //標題
- email.setCharset("GB2312" ); //設定Charset
- email.setMsg("這是一封Java程式發出的測試郵件。" ); //內容
- email.send();
- } catch (EmailException e) {
- e.printStackTrace();
- }
- }
- }
怎麼樣?簡單吧~~~
有人這時說到了網頁郵件,其實只需要把上面SimpleEmail換成HtmlEmail,然後設定郵件
內容的方法由setMsg(String str)變為setHtmlMsg(String
str)就可以了,這樣就可以再郵件裡使用<br/>等html標籤來控制郵件的格式了.
還有人問,那麼附件呢?別急,我們馬上就來做個帶附件傳送的程式碼
- import java.net.MalformedURLException;
- import java.net.URL;
- import org.apache.commons.mail.EmailAttachment;
- import org.apache.commons.mail.EmailException;
- import org.apache.commons.mail.MultiPartEmail;
- publicclass AttachmentMailTest {
- publicstaticvoid main(String[] args) throws EmailException, MalformedURLException {
- // 建立一個Email附件
- EmailAttachment emailattachment = new EmailAttachment();
- emailattachment.setPath("/biao_05.jpg" );
- // emailattachment.setURL(new URL("http://www.blogjava.net/bulktree/picture/bulktree.jpg"));
- emailattachment.setDisposition(EmailAttachment.ATTACHMENT);
- emailattachment.setDescription("This is Smile picture" );
- emailattachment.setName("bulktree" );
- // 建立一個email
- MultiPartEmail multipartemail = new MultiPartEmail();
- multipartemail.setHostName("smtp.163.com" );
- multipartemail.addTo("bulktree@126.com" , "bulktree" );
- multipartemail.setFrom("bulktree@163.com" , "bulktree" );
- multipartemail.setAuthentication("bulktree" , "123456" );
- multipartemail.setSubject("This is a attachment Email" );
- multipartemail.setMsg("this a attachment Eamil Test" );
- //新增附件
- multipartemail.attach(emailattachment);
- //傳送郵件
- multipartemail.send();
- System.out.println("The attachmentEmail send sucessful!!!" );
- }
- }
就這樣,附件也傳送成功了,大家可以試一下,另外這個專案是開源的,大家可以取下載它的src來看看,我暫時就說到這兒..
不過用這個commons-email-1.1.jar實現發郵件還是有2個值得注意的地方:
1.前面提到mail.jar和activation.jar包的問題,這兩個包需要額外下載並且必不可少的兩個包
2.不知是否是我使用錯誤或者軟體環境導致,我在第一次使用時,出現了一個奇怪的異常:
- Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
在網上有人說是因為JavaEE版本和JavaMail的版本不一致導致的.我用的是jdk1.6.查了半天,沒找到是哪裡衝突了,於是我建web專案
時,選擇1.4版本,於是沒有出現任何問題,可以正常使用,估計應該是myeclipse建專案時自帶的jar包引起了這個問題.我用的是
myeclipse 6.0.不知道在eclipse或其他版本的myeclipse上是否會出現這個問題
相關文章
- javamailJavaAI
- javamail參考JavaAI
- JSP與JavaMail(1)---JavaMail和JAF的介紹 (轉)JSJavaAI
- Java郵件(JavaMail)JavaAI
- 關於javamail亂碼?JavaAI
- javamail郵件傳送例子JavaAI
- 關於 JavaMail 的問題JavaAI
- 彭先生,javaMail的問題JavaAI
- javamail的問題急急急JavaAI
- javamail的標記問題JavaAI
- 使用JavaMail傳送郵件JavaAI
- javamail傳送郵件(轉)JavaAI
- 求救:JAVAMAIL編的EMAIL系統JavaAI
- JavaMail 傳送附件的例子 (轉)JavaAI
- 郵件開發:Javamail、JAF簡介JavaAI
- JavaMail中文附件的處理方法 (轉)JavaAI
- 使用JavaMail實現收取和回覆郵件JavaAI
- JavaMail(JAVA郵件服務) API詳解JavaAIAPI
- JavaMail傳送郵件時常見錯誤JavaAI
- 請問 javamail 傳送程式編譯問題JavaAI編譯
- 把JavaMail包裝成簡單的Sendmail (轉)JavaAI
- Springboot+Javamail實現郵件傳送Spring BootJavaAI
- 【知識積累】JavaMail實現發郵件功能JavaAI
- 請高手幫忙了,關於javamail的問題JavaAI
- 怎樣在APPLET中發EMAIL javamail (轉)APPAIJava
- 郵件開發:Tomcat中JavaMail支援與衝突TomcatJavaAI
- JavaMail 保證郵件傳送成功的方法總結JavaAI
- javamail 配置多個郵箱進行傳送 異常JavaAI
- Javamail 中附件中文名字亂碼祥解 (轉)JavaAI
- z
- JavaMail:java使用QQ郵箱傳送郵件簡單版。JavaAI
- JSP與JavaMail(4)---傳送HTML格式的郵件 (轉)JSJavaAIHTML
- ruby中的\z與\Z區別
- JSP與JavaMail(5)---傳送三種型別的附件 (轉)JSJavaAI型別
- 關於JAVAMAIL導致JSP伺服器停止的問題!急JavaAIJS伺服器
- 用過javamail的朋友幫幫忙,我真的沒有辦法了?!!!JavaAI
- 求救:學習用JAVAMAIL編的郵件系統出問題了!JavaAI
- Moto Z值得買嗎 Moto Z全面評測