一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

2021-03-30 14:38江南一點雨 Java教程

這篇文章主要介紹了SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

本文是vhr系列的第十二篇,項目地址https://github.com/lenve/vhr

郵件發(fā)送也是一個老生常談的問題了,代碼雖然簡單,但是許多小伙伴對過程不太理解,所以還是打算和各位小伙伴聊聊這個話題。

郵件協(xié)議

我們經(jīng)常會聽到各種各樣的郵件協(xié)議,比如smtp、pop3、imap,那么這些協(xié)議有什么作用,有什么區(qū)別?我們先來討論一下這個問題。

smtp是一個基于tcp/ip的應(yīng)用層協(xié)議,江湖地位有點類似于http,smtp服務(wù)器默認(rèn)監(jiān)聽的端口號為25。看到這里,小伙伴們可能會想到既然smtp協(xié)議是基于tcp/ip的應(yīng)用層協(xié)議,那么我是不是也可以通過socket發(fā)送一封郵件呢?回答是肯定的。

生活中我們投遞一封郵件要經(jīng)過如下幾個步驟:

1.深圳的小王先將郵件投遞到深圳的郵局

2.深圳的郵局將郵件運送到上海的郵局

3.上海的小張來郵局取郵件

這是一個縮減版的生活中郵件發(fā)送過程。這三個步驟可以分別對應(yīng)我們的郵件發(fā)送過程,假設(shè)從[email protected]發(fā)送郵件到[email protected]

[email protected]先將郵件投遞到騰訊的郵件服務(wù)器

2.騰訊的郵件服務(wù)器將我們的郵件投遞到網(wǎng)易的郵件服務(wù)器

[email protected]登錄網(wǎng)易的郵件服務(wù)器查看郵件

郵件投遞大致就是這個過程,這個過程就涉及到了多個協(xié)議,我們來分別看一下。

SMTP協(xié)議全稱為Simple Mail Transfer Protocol,譯作簡單郵件傳輸協(xié)議,它定義了郵件客戶端軟件于SMTP服務(wù)器之間,以及SMTP服務(wù)器與SMTP服務(wù)器之間的通信規(guī)則。也就是說[email protected]用戶先將郵件投遞到騰訊的SMTP服務(wù)器這個過程就使用了SMTP協(xié)議,然后騰訊的SMTP服務(wù)器將郵件投遞到網(wǎng)易的SMTP服務(wù)器這個過程也依然使用了SMTP協(xié)議,SMTP服務(wù)器就是用來收郵件。而POP3協(xié)議全稱為Post Office Protocol,譯作郵局協(xié)議,它定義了郵件客戶端與POP3服務(wù)器之間的通信規(guī)則,那么該協(xié)議在什么場景下會用到呢?當(dāng)郵件到達(dá)網(wǎng)易的SMTP服務(wù)器之后,[email protected]用戶需要登錄服務(wù)器查看郵件,這個時候就該協(xié)議就用上了:郵件服務(wù)商都會為每一個用戶提供專門的郵件存儲空間,SMTP服務(wù)器收到郵件之后,就將郵件保存到相應(yīng)用戶的郵件存儲空間中,如果用戶要讀取郵件,就需要通過郵件服務(wù)商的POP3郵件服務(wù)器來完成。最后,可能也有小伙伴們聽說過IMAP協(xié)議,這個協(xié)議是對POP3協(xié)議的擴展,功能更強,作用類似,這里不再贅述。

發(fā)送qq郵件準(zhǔn)備工作

首先我們需要先登錄qq郵箱網(wǎng)頁版,點擊上方的設(shè)置按鈕:

 SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

然后點擊賬戶選項卡:

 SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

在賬戶選項卡中找到開啟pop3/smtp選項,如下:

 SpringBoot中發(fā)送QQ郵件功能的實現(xiàn)代碼

點擊開啟,開啟相關(guān)功能,開啟過程需要手機號碼驗證,按照步驟操作即可,不贅述。開啟成功之后,即可獲取一個授權(quán)碼,將該號碼保存好,一會使用。

然后我們需要javaxmail這個jar包,小伙伴可以直接去maven中央倉庫下載,這里不再贅述。

發(fā)送

簡單郵件

如果我們只發(fā)送一個簡單的文本,發(fā)送方式就比較簡單,整個過程可以分為三步如下:

第一步:構(gòu)造smtp郵件服務(wù)器的基本環(huán)境

?
1
2
3
4
5
6
7
8
properties properties = new properties();
properties.setproperty("mail.host", "smtp.qq.com");
properties.setproperty("mail.transport.protocol", "smtp");
properties.setproperty("mail.smtp.auth", "true");
properties.setproperty("mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketfactory");
properties.setproperty("mail.smtp.port", "465");
session session = session.getdefaultinstance(properties);
session.setdebug(true);

第二步:構(gòu)造郵件

?
1
2
3
4
5
6
mimemessage mimemessage = new mimemessage(session);
mimemessage.addrecipients(message.recipienttype.to, "[email protected]");//設(shè)置收信人
mimemessage.addrecipients(message.recipienttype.cc, "[email protected]");//抄送
mimemessage.setfrom("[email protected]");//郵件發(fā)送人
mimemessage.setsubject("測試郵件主題");//郵件主題
mimemessage.setcontent("hello,這是一封測試郵件", "text/html;charset=utf-8");//正文

第三步:發(fā)送郵件

?
1
2
3
4
transport transport = session.gettransport();
transport.connect("smtp.qq.com", "[email protected]", "剛剛申請到的授權(quán)碼");
transport.sendmessage(mimemessage, mimemessage.getallrecipients());//發(fā)送郵件,第二個參數(shù)為收件人
transport.close();

復(fù)雜郵件

發(fā)送復(fù)雜郵件,第一步和第三步也是一樣的,只有第二步構(gòu)造郵件的過程比較麻煩,那么接下來給小伙伴們演示一個發(fā)送一封圖文+兩個附件的郵件。要發(fā)送復(fù)雜郵件,得先熟悉三個概念,如下:

1.mimemessage:該類是個能理解mime類型和頭的電子郵件消息

2.mimemultipart:該類定義了增加、刪除以及獲取郵件不同部分內(nèi)容的方法

3.mimebodypart:該對象代表一個mimemessage對象內(nèi)容的一部分。每個mimebodypart被認(rèn)為有兩部分:mime類型和匹配這個類型的內(nèi)容

完整的郵件生成過程如下(第一步和第三步參考上文):

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
mimemessage mimemessage = new mimemessage(session);
mimemessage.addrecipients(message.recipienttype.to, "[email protected]");//設(shè)置收信人
mimemessage.addrecipients(message.recipienttype.cc, "[email protected]");//抄送
mimemessage.setfrom("[email protected]");//郵件發(fā)送人
mimemessage.setsubject("測試郵件主題");//郵件主題
mimemultipart mixed = new mimemultipart("mixed");
mimemessage.setcontent(mixed);//設(shè)置整封郵件的mime消息體為混合的組合關(guān)系
mimebodypart attach1 = new mimebodypart();//創(chuàng)建附件1
mimebodypart attach2 = new mimebodypart();//創(chuàng)建附件2
mimebodypart content = new mimebodypart();//創(chuàng)建郵件正文
mixed.addbodypart(attach1);//將附件一添加到mime消息體中
mixed.addbodypart(attach2);//將附件二添加到mime消息體中
mixed.addbodypart(content);//將正文添加到消息體中
filedatasource fds1 = new filedatasource(new file("c:\\users\\sang\\desktop\\1.png"));//構(gòu)造附件一的數(shù)據(jù)源
datahandler dh1 = new datahandler(fds1);//數(shù)據(jù)處理
attach1.setdatahandler(dh1);//設(shè)置附件一的數(shù)據(jù)源
attach1.setfilename("1.png");//設(shè)置附件一的文件名
//附件二的操作與附件一類似,這里就不一一注釋了
filedatasource fds2 = new filedatasource(new file("c:\\users\\sang\\desktop\\博客筆記.xlsx"));
datahandler dh2 = new datahandler(fds2);
attach2.setdatahandler(dh2);
attach2.setfilename(mimeutility.encodetext("博客筆記.xlsx"));//設(shè)置文件名時,如果有中文,可以通過mimeutility類中的encodetext方法進行編碼,避免亂碼
mimemultipart bodymimemultipart = new mimemultipart("related");//設(shè)置正文的mime類型
content.setcontent(bodymimemultipart);//將bodymimemultipart添加到正文消息體中
mimebodypart bodypart = new mimebodypart();//正文的html部分
bodypart.setcontent("<h1>hello大家好,這是一封測試郵件<img src='cid:2.png'/></h1>","text/html;charset=utf-8");
mimebodypart picpart = new mimebodypart();//正文的圖片部分
datahandler datahandler = new datahandler(new filedatasource("c:\\users\\sang\\desktop\\2.png"));
picpart.setdatahandler(datahandler);
picpart.setcontentid("2.png");
//將正文的html和圖片部分分別添加到bodymimemultipart中
bodymimemultipart.addbodypart(bodypart);
bodymimemultipart.addbodypart(picpart);
mimemessage.savechanges();

ok,java mail發(fā)送qq郵件就是這么簡單,至于其他的如163,sina等,寫法類似,這里我就不贅述了。

總結(jié)

以上所述是小編給大家介紹的springboot中發(fā)送qq郵件功能的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

原文鏈接:https://segmentfault.com/a/1190000013092374

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲AV蜜桃永久无码精品红樱桃 | 疯狂刺激的3p国产在线 | 三级网站午夜三级 | 亚洲精品国偷拍自产在线观看蜜臀 | 欧美又黄又激烈真实床戏 | 免费观看韩剧网站在线观看 | 人配人种视频xxxx | 色哟哟哟在线精品观看视频 | 国产成人久久精品区一区二区 | 99精品视频一区在线观看miya | 日本一道本中文字幕 | 男插女的下面免费视频夜色 | 日日摸夜夜爽色婷婷91 | 精品久久免费视频 | 99久久综合 | 青久草视频 | 黄动漫软件车车好快的车车 | 美女和男生搞基 | 亚洲国产成人精品不卡青青草原 | 日韩毛片免费线上观看 | 国产精品久久久久无毒 | 精品高潮呻吟99AV无码视频 | 99视频九九精品视频在线观看 | 男人疯狂进女人下部视频动漫 | 高清欧美不卡一区二区三区 | 女仆色在线观看 | 美日韩在线观看 | 好大好猛好爽好深视频免费 | 美女扒开腿让男人桶爽动态图片 | naruto hentai玖辛奈 | 日韩专区在线观看 | bnb998八度免费影院丫意浓 | 国产成人黄网在线免 | 深夜在线网站 | 久久毛片免费看一区二区三区 | 日韩欧美精品一区二区 | aa视频免费 | 好男人资源免费播放在线观看 | 免费看美女被靠到爽 | 国产特黄a级在线视频 | 特黄a级三级三级野战 |