基于JavaMail API收發(fā)郵件的方法
本文實例講述了基于JavaMail API收發(fā)郵件的方法。分享給大家供大家參考。具體如下:
1.JavaMail API按其功能劃分通常可分為如下三大類
(1)創(chuàng)建和解析郵件內(nèi)容的API :Message類是創(chuàng)建和解析郵件的核心API,它的實例對象代表一封電子郵件。
(2)發(fā)送郵件的API:Transport類是發(fā)送郵件的核心API類,它的實例對象代表實現(xiàn)了某個郵件發(fā)送協(xié)議的郵件發(fā)送對象,例如SMTP協(xié)議。
(3)接收郵件的API:Store類是接收郵件的核心API類,它的實例對象代表實現(xiàn)了某個郵件接收協(xié)議的郵件接收對象,例如POP3協(xié)議。
2. Session類
Session類用于定義整個應(yīng)用程序所需的環(huán)境信息,以及收集客戶端與郵件服務(wù)器建立網(wǎng)絡(luò)連接的會話信息,如郵件服務(wù)器的主機名、端口號、采用的郵件發(fā)送和接收協(xié)議等。Session對象根據(jù)這些信息構(gòu)建用于郵件收發(fā)的Transport和Store對象,以及為客戶端創(chuàng)建Message對象時提供信息支持。
3.使用JavaMail發(fā)送一封簡單的郵件
創(chuàng)建包含郵件服務(wù)器的網(wǎng)絡(luò)連接信息的Session對象。
創(chuàng)建代表郵件內(nèi)容的Message對象。
創(chuàng)建Transport對象、連接服務(wù)器、發(fā)送Message、關(guān)閉連接。
4.實例
(1)JavaMail郵件只發(fā)送內(nèi)容
public class SendMail {
public static void main(String[] args) throws Exception {
//屬性文件
Properties props=new Properties();
//設(shè)置郵件的發(fā)送主機名、發(fā)送協(xié)議和是否驗證
props.setProperty("mail.host","smtp.sohu.com" );
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
//獲取發(fā)送接收郵件環(huán)境的對象
Session session=Session.getInstance(props);
Message message=createMessage(session);
//創(chuàng)建發(fā)送郵件的對象
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)境對象創(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ā)送主機名、發(fā)送協(xié)議和是否驗證
props.setProperty("mail.host","smtp.sohu.com" );
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
//獲取發(fā)送接收郵件環(huán)境的對象
Session session=Session.getInstance(props);
Message message=createMessage(session);
//創(chuàng)建發(fā)送郵件的對象
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ā)送主機名、發(fā)送協(xié)議和是否驗證
props.setProperty("mail.host","smtp.sohu.com" );
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
//獲取發(fā)送接收郵件環(huán)境的對象
Session session=Session.getInstance(props);
Message message=createMessage(session);
//創(chuàng)建發(fā)送郵件的對象
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;
}
}
注:郵箱地址必須是真實的
希望本文所述對大家的java程序設(shè)計有所幫助。
相關(guān)文章
SpringBoot3實現(xiàn)上傳圖片并返回路徑讓前端顯示圖片
這篇文章主要介紹了SpringBoot3實現(xiàn)上傳圖片并返回路徑讓前端顯示圖片,文中通過圖文和代碼講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-12-12
Spring Boot @Scheduled定時任務(wù)代碼實例解析
這篇文章主要介紹了Spring Boot @Scheduled定時任務(wù)代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Spring Cloud構(gòu)建Eureka應(yīng)用的方法
這篇文章主要介紹了Spring Cloud構(gòu)建Eureka應(yīng)用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時候報decompiled.class file byt
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時候報decompiled.class file bytecode version:52.0(java 8)錯誤的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-10-10
Java如何使用逆波蘭式(后綴表達(dá)式)計算表達(dá)式的值
這篇文章主要介紹了Java如何使用逆波蘭式(后綴表達(dá)式)計算表達(dá)式的值,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Spring Cloud OAuth2中/oauth/token的返回內(nèi)容格式
Spring Cloud OAuth2 生成access token的請求/oauth/token的返回內(nèi)容就需要自定義,本文就詳細(xì)介紹一下,感興趣的可以了解一下2021-07-07

