JavaMail實(shí)現(xiàn)簡單郵件發(fā)送
本文實(shí)例為大家分享了JavaMail實(shí)現(xiàn)簡單郵件發(fā)送的具體代碼,供大家參考,具體內(nèi)容如下
簡單郵件
即純文本郵件,沒有除文字以外的其他所有文件。
傳輸協(xié)議
- SMTP協(xié)議
全稱為 Simple Mail Transfer Protocol,簡單郵件傳輸協(xié)議。它定義了郵件客戶端軟件和SMTP郵件服務(wù)器之間,以及兩臺SMTP郵件服務(wù)器之間的通信規(guī)則。
- POP3協(xié)議
全稱為 Post Office Protocol,郵局協(xié)議。它定義了郵件客戶端軟件和POP3郵件服務(wù)器的通信規(guī)則。
郵件發(fā)送原理

①SMTP郵件服務(wù)器:替用戶發(fā)送郵件和接收外面發(fā)送給本地用戶的郵件。
②POP3/IMAP郵件服務(wù)器:幫助用戶讀取SMTP郵件服務(wù)器接收進(jìn)來的郵件。
③申請郵箱其實(shí)就是在郵箱的文件系統(tǒng)中申請一塊地址,用來存放用戶的郵件。
實(shí)現(xiàn)郵件發(fā)送需要使用的類
①JavaMail API(mail.jar)
②Java Activation Framework(activation.jar)

準(zhǔn)備工作
開啟郵箱的POP3和SMTP服務(wù),并獲取授權(quán)碼。

步驟
①準(zhǔn)備參數(shù)
如設(shè)置郵件服務(wù)器(網(wǎng)易的是smtp.163.com),郵件發(fā)送協(xié)議等。
②獲取Session對象
③獲取傳輸對象transport
④登錄授權(quán)
⑤寫郵件
⑥發(fā)郵件
⑦關(guān)閉服務(wù)器資源
代碼實(shí)現(xiàn)
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
//發(fā)送簡單郵件
public class test1 {
? ? public static void main(String[] args) throws MessagingException {
? ? ? ? Properties properties=new Properties();
? ? ? ? properties.setProperty("mail.host","smtp.163.com");//設(shè)置郵件服務(wù)器
? ? ? ? properties.setProperty("mail.transport.protocol","smtp");//郵件發(fā)送協(xié)議
? ? ? ? properties.setProperty("mail.smtp.auth","true");//需要驗(yàn)證用戶名密碼
? ? ? ? //使用JavaMail發(fā)送郵件的5個步驟
? ? ? ? //1、創(chuàng)建定義整個應(yīng)用程序所需的環(huán)境信息的 Session 對象
? ? ? ? Session session = Session.getInstance(properties);
? ? ? ? //開啟Session的debug模式,這樣就可以查看到程序發(fā)送Email的運(yùn)行狀態(tài)
? ? ? ? session.setDebug(true);
? ? ? ? //2、通過session得到transport對象
? ? ? ? Transport transport = session.getTransport();
? ? ? ? //3、使用郵箱的用戶名和授權(quán)碼連上郵件服務(wù)器,發(fā)送郵件時, 發(fā)件人需要提交郵箱的用戶名和密碼給smtp服務(wù)器,用戶名和密碼都通過驗(yàn)證之后才能夠正常發(fā)送郵件給收件人。
? ? ? ? transport.connect("smtp.163.com",用戶名,授權(quán)碼);
? ? ? ? //4、創(chuàng)建郵件
? ? ? ? //創(chuàng)建一個郵件對象
? ? ? ? MimeMessage message=new MimeMessage(session);
? ? ? ? //指明郵件的發(fā)件人
? ? ? ? message.setFrom(new InternetAddress(發(fā)件人郵箱));
? ? ? ? //指明收件人
? ? ? ? message.setRecipient(Message.RecipientType.TO,new InternetAddress(收件人郵箱));
? ? ? ? //郵件標(biāo)題
? ? ? ? message.setSubject("簡單郵件發(fā)送");
? ? ? ? //郵件的文本內(nèi)容
? ? ? ? message.setText("這是一封簡單的郵件");
? ? ? ? //5、發(fā)送郵件
? ? ? ? transport.sendMessage(message,message.getAllRecipients());
? ? ? ? //關(guān)閉連接
? ? ? ? transport.close();
? ? }
}運(yùn)行結(jié)果

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaMail實(shí)現(xiàn)郵件發(fā)送機(jī)制
- JavaMail整合Spring實(shí)現(xiàn)郵件發(fā)送功能
- 基于JavaMail實(shí)現(xiàn)簡單郵件發(fā)送
- 基于JavaMail的Java郵件發(fā)送
- JavaMail郵件發(fā)送機(jī)制詳解
- 基于JavaMail實(shí)現(xiàn)郵件發(fā)送
- 基于JavaMail的Java實(shí)現(xiàn)復(fù)雜郵件發(fā)送功能
- 基于JavaMail的Java實(shí)現(xiàn)簡單郵件發(fā)送功能
- JavaMail實(shí)現(xiàn)郵件發(fā)送的方法
- JavaMail實(shí)現(xiàn)帶附件的郵件發(fā)送
相關(guān)文章
Java 隊列實(shí)現(xiàn)原理及簡單實(shí)現(xiàn)代碼
這篇文章主要介紹了Java 隊列實(shí)現(xiàn)原理及簡單實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10
Java?C++分別實(shí)現(xiàn)滑動窗口的最大值
這篇文章主要介紹了分別通過Java和C++實(shí)現(xiàn)滑動窗口最大值,即給定一個數(shù)組?nums?和滑動窗口的大小?k,請找出所有滑動窗口里的最大值。感興趣的可以了解一下2021-12-12
SpringBoot integration實(shí)現(xiàn)分布式鎖的示例詳解
常規(guī)項(xiàng)目都是采用Redission來實(shí)現(xiàn)分布式鎖,進(jìn)行分布式系統(tǒng)中資源競爭加鎖操作,偶然發(fā)現(xiàn)SpringBoot中的integration也實(shí)現(xiàn)多種載體的分布式鎖控制,下面我們就來看看具體實(shí)現(xiàn)方法吧2023-12-12
java使用wait和notify實(shí)現(xiàn)線程通信
這篇文章主要為大家詳細(xì)介紹了java如何使用wait和notify實(shí)現(xiàn)線程之間通信,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
MyBatis中執(zhí)行相關(guān)SQL語句的方法
本文主要介紹了MyBatis中執(zhí)行相關(guān)SQL語句的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Java利用future及時獲取多線程運(yùn)行結(jié)果
在Java編程中,有時候會需要及時獲取線程的運(yùn)行結(jié)果,本文就通過一個相關(guān)實(shí)例向大家介紹Java利用future及時獲取線程運(yùn)行結(jié)果的方法,需要的朋友可以參考。2017-10-10

