JavaMail入門(mén)教程之發(fā)送郵件(3)
JavaMail API中定義了一個(gè)java.mail.Transport類(lèi),它專(zhuān)門(mén)用于執(zhí)行郵件發(fā)送任務(wù),這個(gè)類(lèi)的實(shí)例對(duì)象封裝了某種郵件發(fā)送協(xié)議的底層實(shí)施細(xì)節(jié),應(yīng)用程序調(diào)用這個(gè)類(lèi)中的方法就可以把Message對(duì)象中封裝的郵件數(shù)據(jù)發(fā)送到指定的SMTP服務(wù)器。使用JavaMail發(fā)送郵件時(shí)設(shè)計(jì)到的主要API之間的工作關(guān)系如下所示:

1、從Session對(duì)象中獲得實(shí)現(xiàn)了某種郵件發(fā)送協(xié)議的Transport對(duì)象;
2、使用Session對(duì)象創(chuàng)建Message對(duì)象,并調(diào)用Message對(duì)象的方法封裝郵件數(shù)據(jù);
3、連接指定的SMTP服務(wù)器,調(diào)用Transport對(duì)象中的郵件發(fā)送方法Message對(duì)象中封裝的郵件數(shù)據(jù)。
在JavaMail入門(mén)第二篇 創(chuàng)建郵件一文中,我們學(xué)會(huì)了創(chuàng)建郵件,不過(guò)當(dāng)時(shí)我們是將郵件寫(xiě)入到我們的本地磁盤(pán)中,接下來(lái)我們用JavaMail API提供的Transport類(lèi)來(lái)發(fā)送郵件。
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendTextMail {
public static void main(String[] args) throws Exception {
String from = "123456@qq.com";
String to = "123456@163.com";
String subject = "test";
String body = "test!!!";
String smtpHost = "smtp.qq.com";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp"); // 使用的協(xié)議(JavaMail規(guī)范要求)
props.setProperty("mail.smtp.host", smtpHost); // 發(fā)件人的郵箱的 SMTP服務(wù)器地址
props.setProperty("mail.smtp.auth", "true"); // 請(qǐng)求認(rèn)證,參數(shù)名稱(chēng)與具體實(shí)現(xiàn)有關(guān)
// 創(chuàng)建Session實(shí)例對(duì)象
Session session = Session.getDefaultInstance(props);
// 創(chuàng)建MimeMessage實(shí)例對(duì)象
MimeMessage message = new MimeMessage(session);
// 設(shè)置發(fā)件人
message.setFrom(new InternetAddress(from));
// 設(shè)置收件人
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
// 設(shè)置發(fā)送日期
message.setSentDate(new Date());
// 設(shè)置郵件主題
message.setSubject(subject);
// 設(shè)置純文本內(nèi)容的郵件正文
message.setText(body);
// 保存并生成最終的郵件內(nèi)容
message.saveChanges();
// 設(shè)置為debug模式, 可以查看詳細(xì)的發(fā)送 log
session.setDebug(true);
// 獲取Transport對(duì)象
Transport transport = session.getTransport("smtp");
// 第2個(gè)參數(shù)需要填寫(xiě)的是QQ郵箱的SMTP的授權(quán)碼,什么是授權(quán)碼,它又是如何設(shè)置?
transport.connect(from, "****************");
// 發(fā)送,message.getAllRecipients() 獲取到的是在創(chuàng)建郵件對(duì)象時(shí)添加的所有收件人, 抄送人, 密送人
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
注意:郵箱賬號(hào)必須要開(kāi)啟SMTP服務(wù)。
發(fā)送帶內(nèi)嵌資源或者是帶附件的復(fù)雜郵件代碼與JavaMail入門(mén)第二篇 創(chuàng)建郵件一文中類(lèi)似,只是將寫(xiě)入硬盤(pán)的步驟替換成上面代碼中的42-47行即可。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法
這篇文章主要為大家詳細(xì)介紹了java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
在Spring中如何注入動(dòng)態(tài)代理Bean
這篇文章主要介紹了在Spring中如何注入動(dòng)態(tài)代理Bean問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和)
這篇文章主要介紹了Java8使用stream實(shí)現(xiàn)list中對(duì)象屬性的合并(去重并求和),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
java數(shù)據(jù)結(jié)構(gòu)之二分查找法 binarySearch的實(shí)例
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)之二分查找法 binarySearch的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
關(guān)于SpringBoot+Mybatis報(bào)MapperScan.factoryBean()問(wèn)題
解決SpringBoot+Mybatis中的MapperScan.factoryBean()問(wèn)題,讓你的項(xiàng)目運(yùn)行更順暢!本指南將帶你一步步解決這個(gè)問(wèn)題,讓你的開(kāi)發(fā)過(guò)程更加高效,不要錯(cuò)過(guò)這個(gè)實(shí)用指南,快來(lái)一探究竟吧!2024-02-02
Spring Data Neo4j實(shí)現(xiàn)復(fù)雜查詢(xún)的多種方式
在 Spring Data Neo4j 中,實(shí)現(xiàn)復(fù)雜查詢(xún)可以通過(guò)多種方式進(jìn)行,包括使用自定義查詢(xún)、方法命名查詢(xún)以及使用 Cypher 查詢(xún)語(yǔ)言,以下是詳細(xì)介紹,幫助你在 Spring Data Neo4j 中實(shí)現(xiàn)復(fù)雜查詢(xún),需要的朋友可以參考下2024-11-11
Java分頁(yè)查詢(xún)--分頁(yè)顯示(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇Java分頁(yè)查詢(xún)--分頁(yè)顯示(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
MyBatis入門(mén)學(xué)習(xí)教程-MyBatis快速入門(mén)
MyBatis是一個(gè)支持普通SQL查詢(xún),存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架,這篇文章主要給大家分享MyBatis的一篇快速入門(mén)教程2021-06-06

