基于JavaMail API收發(fā)郵件的方法
本文實(shí)例講述了基于JavaMail API收發(fā)郵件的方法。分享給大家供大家參考。具體如下:
1.JavaMail API按其功能劃分通??煞譃槿缦氯箢?/p>
(1)創(chuàng)建和解析郵件內(nèi)容的API :Message類是創(chuàng)建和解析郵件的核心API,它的實(shí)例對(duì)象代表一封電子郵件。
(2)發(fā)送郵件的API:Transport類是發(fā)送郵件的核心API類,它的實(shí)例對(duì)象代表實(shí)現(xiàn)了某個(gè)郵件發(fā)送協(xié)議的郵件發(fā)送對(duì)象,例如SMTP協(xié)議。
(3)接收郵件的API:Store類是接收郵件的核心API類,它的實(shí)例對(duì)象代表實(shí)現(xiàn)了某個(gè)郵件接收協(xié)議的郵件接收對(duì)象,例如POP3協(xié)議。
2. Session類
Session類用于定義整個(gè)應(yīng)用程序所需的環(huán)境信息,以及收集客戶端與郵件服務(wù)器建立網(wǎng)絡(luò)連接的會(huì)話信息,如郵件服務(wù)器的主機(jī)名、端口號(hào)、采用的郵件發(fā)送和接收協(xié)議等。Session對(duì)象根據(jù)這些信息構(gòu)建用于郵件收發(fā)的Transport和Store對(duì)象,以及為客戶端創(chuàng)建Message對(duì)象時(shí)提供信息支持。
3.使用JavaMail發(fā)送一封簡(jiǎn)單的郵件
創(chuàng)建包含郵件服務(wù)器的網(wǎng)絡(luò)連接信息的Session對(duì)象。
創(chuàng)建代表郵件內(nèi)容的Message對(duì)象。
創(chuàng)建Transport對(duì)象、連接服務(wù)器、發(fā)送Message、關(guān)閉連接。
4.實(shí)例
(1)JavaMail郵件只發(fā)送內(nèi)容
public class SendMail { public static void main(String[] args) throws Exception { //屬性文件 Properties props=new Properties(); //設(shè)置郵件的發(fā)送主機(jī)名、發(fā)送協(xié)議和是否驗(yàn)證 props.setProperty("mail.host","smtp.sohu.com" ); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.smtp.auth", "true"); //獲取發(fā)送接收郵件環(huán)境的對(duì)象 Session session=Session.getInstance(props); Message message=createMessage(session); //創(chuàng)建發(fā)送郵件的對(duì)象 Transport tsp=session.getTransport(); tsp.connect("jb51", "jb51"); tsp.sendMessage(message, message.getAllRecipients()); tsp.close(); } public static Message createMessage(Session session) throws Exception{ //根據(jù)環(huán)境對(duì)象創(chuàng)建一份郵件 MimeMessage message=new MimeMessage(session); //設(shè)置郵件屬性 message.setFrom(new InternetAddress("jb51@sohu.com")); message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com")); message.setSubject("hello"); //創(chuàng)建郵件體 MimeBodyPart text=new MimeBodyPart(); text.setContent("你好?","text/html;charset=utf-8"); //設(shè)置描述關(guān)系 MimeMultipart mm=new MimeMultipart(); mm.addBodyPart(text); message.setContent(mm); message.saveChanges(); return message; } }
(2)JavaMail郵件發(fā)送內(nèi)容和圖片
public class SendImageMail { public static void main(String[] args) throws Exception { //屬性文件 Properties props=new Properties(); //設(shè)置郵件的發(fā)送主機(jī)名、發(fā)送協(xié)議和是否驗(yàn)證 props.setProperty("mail.host","smtp.sohu.com" ); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.smtp.auth", "true"); //獲取發(fā)送接收郵件環(huán)境的對(duì)象 Session session=Session.getInstance(props); Message message=createMessage(session); //創(chuàng)建發(fā)送郵件的對(duì)象 Transport tsp=session.getTransport(); tsp.connect("jb51", "jb51"); tsp.sendMessage(message, message.getAllRecipients()); tsp.close(); } public static Message createMessage(Session session) throws Exception{ MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress("jb51@sohu.com")); message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com")); message.setSubject("圖片"); MimeBodyPart text=new MimeBodyPart(); text.setContent("好看嗎?<br/><img src='cid:xx.jpg'>","text/html;charset=utf-8"); MimeBodyPart image=new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource("src//f.jpg"))); image.setContentID("xx.jpg"); MimeMultipart mm=new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType("related"); message.setContent(mm); message.saveChanges(); return message; } }
(3)JavaMail郵件發(fā)送內(nèi)容、圖片和附件
public class SendAttchImageMail { public static void main(String[] args) throws Exception { //屬性文件 Properties props=new Properties(); //設(shè)置郵件的發(fā)送主機(jī)名、發(fā)送協(xié)議和是否驗(yàn)證 props.setProperty("mail.host","smtp.sohu.com" ); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.smtp.auth", "true"); //獲取發(fā)送接收郵件環(huán)境的對(duì)象 Session session=Session.getInstance(props); Message message=createMessage(session); //創(chuàng)建發(fā)送郵件的對(duì)象 Transport tsp=session.getTransport(); tsp.connect("jb51", "jb51"); tsp.sendMessage(message, message.getAllRecipients()); tsp.close(); } public static Message createMessage(Session session) throws Exception{ MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress("jb51@sohu.com")); message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com")); message.setSubject("圖片"); MimeBodyPart text=new MimeBodyPart(); text.setContent("好看嗎?<br/><img src='cid:xx.jpg'>","text/html;charset=utf-8"); MimeBodyPart image=new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource("src//f.jpg"))); image.setContentID("xx.jpg"); MimeBodyPart attch=new MimeBodyPart(); DataHandler dh=new DataHandler(new FileDataSource("src//默默無 語.mp3")); attch.setDataHandler(dh); String name=dh.getName(); attch.setFileName(MimeUtility.encodeText(name)); MimeMultipart mm=new MimeMultipart(); mm.addBodyPart(text); mm.addBodyPart(image); mm.setSubType("related"); MimeBodyPart part=new MimeBodyPart(); part.setContent(mm); MimeMultipart m=new MimeMultipart(); m.addBodyPart(part); m.addBodyPart(attch); m.setSubType("mixed"); message.setContent(m); message.saveChanges(); return message; } }
注:郵箱地址必須是真實(shí)的
希望本文所述對(duì)大家的java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Eclipse項(xiàng)目怎么導(dǎo)入IDEA并運(yùn)行(超詳細(xì))
這篇文章主要介紹了Eclipse項(xiàng)目怎么導(dǎo)入IDEA并運(yùn)行(超詳細(xì)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Java swing實(shí)現(xiàn)酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java swing實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02MyBatis中動(dòng)態(tài)sql的實(shí)現(xiàn)方法示例
這篇文章主要給大家介紹了關(guān)于MyBatis中動(dòng)態(tài)sql的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11Java的非對(duì)稱加密(RSA、數(shù)字簽名、數(shù)字證書)詳解
這篇文章主要介紹了Java的非對(duì)稱加密(RSA、數(shù)字簽名、數(shù)字證書)詳解,非對(duì)稱加密:加密、解密使用不同的兩把密鑰,這兩把密鑰成對(duì),一般通信開始時(shí)通過非對(duì)稱加密將對(duì)稱加密的密鑰發(fā)送給另一方,然后雙方通過對(duì)稱加密來進(jìn)行溝通,需要的朋友可以參考下2024-01-01IDEA JavaWeb項(xiàng)目啟動(dòng)運(yùn)行后出現(xiàn)404錯(cuò)誤的解決方法
這篇文章主要介紹了IDEA JavaWeb項(xiàng)目啟動(dòng)運(yùn)行后出現(xiàn)404錯(cuò)誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12JetBrains IntelliJ IDEA 2020安裝與使用教程詳解
這篇文章主要介紹了JetBrains IntelliJ IDEA 2020安裝與使用教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06