日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

JMail 应用实践(一)--- 简介用Java程序发送email

發布時間:2025/3/17 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JMail 应用实践(一)--- 简介用Java程序发送email 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?用JavaMail 發送電子郵件雖然很簡單,但是對于未接觸過的朋友,它還存在著一絲神秘。本文通過用一個簡單的Java 應用程序發送一封電子郵件來揭開這片神秘的面紗,而對于郵件協議等等內容,這里暫不涉及---東西太多了就像云霧一樣遮住了雙眼。這方面以后還需要跟大家專門探討一下。

?

?????? JavaMail API 是一個用于閱讀、編寫和發送電子消息的可選包(標準擴展),與Microsoft Outlook、FoxMail之類的軟件功能相似。這也可以看出,API本身的用途并不是用來傳輸、發送和轉發電子消息,這些都是郵件服務器的工作,JMail API 用來創建郵件用戶代理(Mail User Agent)類型程序,郵件服務器我們以后再介紹。

?

?????? 在開始介紹一下本示例的運行環境:

??????·Window 2000 Server sp4

????·JDK 6u10b

??? ·JMail API v1.4.2

??? ·JAF API v1.1 (JavaBean Activation Framework) 這個是JMail API依賴的支持庫

???·Eclipse 3.4 for J2EE Developers

?

?

???

????用JavaMail發送電子郵件的過程比較簡單,大致分為以下四個步驟:

?

????1. 創建Properties?對象,設置郵件服務器屬性:mail.smtp.host?,其指定你的SMTP服務器,這個服務器不用擔心,我們就用163現成的。

?

????? 2.? 建立一個郵件會話,你可以創建若干個郵件會話,有興趣可以研究研究

?

????? 3.? 創建你的郵件信息對象,該對象包含了你的郵件的全部內容,包括發送人,接受人,標題,正文,附件等內容

?

??? 4.?郵件傳輸,郵件的傳輸只有送出和收到兩中狀態。JavaMail 將之稱為傳輸和存儲。這里我只展示發送郵件??

?

??????? 用代碼來描述如下所示:

Java代碼?
  • String?host?=?...;?//?指定的smtp服務器??
  • String?from?=?...;?//?郵件發送人的郵件地址??
  • String?to?=?...;?//?郵件接收人的郵件地址??
  • ??
  • //?創建Properties?對象??
  • Properties?props?=?System.getProperties();??
  • ??
  • //?添加smtp服務器屬性??
  • props.put("mail.smtp.host",?host);??
  • ??
  • //?創建郵件會話??
  • Session?session?=?Session.getDefaultInstance(props,?null);??
  • ??
  • try?{??
  • ????//?定義郵件信息??
  • ????MimeMessage?message?=?new?MimeMessage(session);??
  • ????message.setFrom(new?InternetAddress(from));??
  • ????message.addRecipient(Message.RecipientType.TO,?new?InternetAddress(??
  • ????????????to));??
  • ????message.setSubject("HelloWorld?JavaMail");??
  • ????message.setText("Welcome?to?JavaMail?World!");??
  • ??
  • ????//?發送消息??
  • ????Transport.send(message);??
  • ??
  • }?catch?(MessagingException?e)?{??
  • ????//?TODO?Auto-generated?catch?block??
  • ????e.printStackTrace();??
  • }??
  • ?

    ?????? 以上已經描述用JMail?發送郵件的大致過程,如果你有一個免費的不需要帳戶認證的公用郵件服務器,上面的程序已經可以用來發送郵件了。(不過我沒有找到這樣的郵件服務器,不過可以自己配置一個^_^)

    ?

    ?

    ?????? 眼見為實,不真正發送成功一個郵件,始終會讓人覺得掉胃口。要想那樣,我們需要稍微修改上面的程序,完整的程序如下:

    Java代碼?
  • package?com.zhaipuhong.j2ee.jmail;??
  • ??
  • import?java.util.Properties;??
  • ??
  • import?javax.mail.Authenticator;??
  • import?javax.mail.Message;??
  • import?javax.mail.MessagingException;??
  • import?javax.mail.PasswordAuthentication;??
  • import?javax.mail.Session;??
  • import?javax.mail.Transport;??
  • import?javax.mail.internet.InternetAddress;??
  • import?javax.mail.internet.MimeMessage;??
  • ??
  • public?class?HelloJMail?{??
  • ??????
  • ???????public?static?void?sendMail()?{??
  • ????String?host?=?"smtp.163.com";?//?指定的smtp服務器??
  • ????String?from?=?"";?//?郵件發送人的郵件地址??
  • ????String?to?=?"";?//?郵件接收人的郵件地址??
  • ????final?String?username?=?"";??//發件人的郵件帳戶??
  • ????final?String?password?=?"";???//發件人的郵件密碼??
  • ??
  • ????//?創建Properties?對象??
  • ????Properties?props?=?System.getProperties();??
  • ??
  • ????//?添加smtp服務器屬性??
  • ????props.put("mail.smtp.host",?host);??
  • ????props.put("mail.smtp.auth",?"true");???//163的stmp不是免費的也不公用的,需要驗證??
  • ??
  • ????//?創建郵件會話??
  • ????Session?session?=?Session.getDefaultInstance(props,?new?Authenticator(){??//驗賬賬戶??
  • ????????@Override??
  • ????????public?PasswordAuthentication?getPasswordAuthentication()?{??
  • ????????????return?new?PasswordAuthentication(username,?password);??
  • ????????}??
  • ??????????????
  • ????});??
  • ??
  • ????try?{??
  • ????????????//?定義郵件信息??
  • ?????????MimeMessage?message?=?new?MimeMessage(session);??
  • ???????????????????????message.setFrom(new?InternetAddress(from));??
  • ???????????message.addRecipient(Message.RecipientType.TO,?new?InternetAddress(??
  • ????????????????????to));??
  • ???????????message.setSubject("HelloWorld?JavaMail");??
  • ???????????????????????message.setText("Welcome?to?JavaMail?World!");??
  • ??
  • ???????????//?發送消息??
  • ?????????//session.getTransport("smtp").send(message);??//也可以這樣創建Transport對象??
  • ?????????Transport.send(message);??
  • ??
  • ????}?catch?(MessagingException?e)?{??
  • ????????e.printStackTrace();??
  • ????}??
  • ??????}??
  • ??
  • ??????public?static?void?main(String[]?args)?{??
  • ????HelloJMail.sendMail();??
  • ??????}??
  • ??
  • }??
  • ???? 上面的程序把我的郵箱帳號信息刪除了,測試的時候補充你自己的郵箱帳號信息即可使用:

    Java代碼?
  • ……??
  • public?static?void?sendMail()?{??
  • ???????String?host?=?"smtp.163.com";?//?指定的smtp服務器??
  • ???String?from?=?"";?//?郵件發送人的郵件地址??
  • ???String?to?=?"";?//?郵件接收人的郵件地址??
  • ???final?String?username?=?"";??//發件人的郵件帳戶??
  • ???final?String?password?=?"";???//發件人的郵件密碼??
  • ?

    ?

    ????? FAQ:

    ???? 1. 如果你遇到“……553 authentication is required……”

    ????? 請檢查你的如下設置是否正確:

    ?

    Java代碼?
  • ……??
  • ??
  • props.put("mail.smtp.auth",?"true");??
  • ??
  • ……??
  • Session?session?=?Session.getDefaultInstance(props,?new?Authenticator(){//你也可以單獨創建Authenticator對象??
  • ????????????@Override??
  • ????????????public?PasswordAuthentication?getPasswordAuthentication()?{??
  • ????????????????return?new?PasswordAuthentication(username,?password);??
  • ????????????}??
  • ??????????????
  • });??
  • ??
  • ……??
  • ????? 2.?如果你遇到“……java.lang.NoClassDefFoundError……com/sun/mail/util/SharedByteArrayInputS?、?? com/sun/mail/util/MailDateFormat……??”?之類的錯誤

    ????? 可能你的項目中引用了j2ee.jar包,里面包含有jmail API,與你添加到classpath中的jmail.jar版本不一樣或者內容有差別等造成,你需要在classpath中把你剛添加的jmail.jar和activation.jar放在j2ee.jar的前面,在IDE中,就在類庫中把這兩個包“move up”到j2ee.jar包的上面。

    新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

    總結

    以上是生活随笔為你收集整理的JMail 应用实践(一)--- 简介用Java程序发送email的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。