摘要:協(xié)議默認(rèn)為,協(xié)議默認(rèn)為如果設(shè)置為如果設(shè)置,并且未指定套接字工廠,則啟用如果設(shè)置為如果設(shè)置為擴(kuò)展如果設(shè)置,則指定擴(kuò)展指定將為連接啟用的協(xié)議。
在日常中的工作中難免會(huì)遇到程序集成郵件發(fā)送功能、接收功能;此篇文章我將使用SpringBoot集成郵件發(fā)送功能和接收功能;若對(duì)郵件一些基本協(xié)議和發(fā)送流程不懂的請(qǐng)務(wù)必參考我之前寫的博客或者瀏覽網(wǎng)上資料。
【郵件基本概念及發(fā)送方式】 【JavaMail發(fā)送郵件(超詳細(xì))】
在我們現(xiàn)在使用的SpringBoot的版本中,底層發(fā)送郵件的技術(shù)都是使用一個(gè)叫 Jakarta Mail 的,它可有實(shí)現(xiàn)SMTP、POP、IMAP等基本的郵件發(fā)送和接收協(xié)議,因?yàn)榍皟善叶冀榻B了,這里就不在多說,直接上干貨??!
使用SpringBoot腳手架創(chuàng)建一個(gè)SpringBoot項(xiàng)目后導(dǎo)入下面郵件發(fā)送坐標(biāo),或者在腳手架創(chuàng)建中也可有選擇
org.springframework.boot
在發(fā)送郵件前我簡(jiǎn)單說說JavaMailSender和JavaMailSenderImpl;它們是Spring官方提供的一套郵件功能集成接口及實(shí)現(xiàn),底層調(diào)用具體的Jakarta Mail技術(shù);可以說是二次封裝;使用SpringBoot提供的接口及實(shí)現(xiàn)是后端郵件發(fā)送最主流的集成工具;我們?cè)跇I(yè)務(wù)里直接注入JavaMailSenderImpl后并調(diào)用send方法。其中簡(jiǎn)單的郵件我們可以通過SimpleMailMessage來發(fā)送,對(duì)于復(fù)雜的帶有附件的我們可以借助MimeMessageHelper來構(gòu)建MimeMessage發(fā)送郵件。
spring..host=smtp.163.spring..username=spring..password=xxxxxxxxxxxxxxx
SimpleMailMessage message = "antladdie@163.com"); message.setTo("xiaofeng504@qq.com"); message.setCc("xiaofeng500@qq.com"); message.setBcc("575814158@qq.com"); message.setSubject("繳費(fèi)通知"); message.setText("您手機(jī)已欠費(fèi)100元,請(qǐng)及時(shí)繳費(fèi)!"); message.setSentDate( Date());
這里的 Jakarta Mail 的 properties 擴(kuò)展配置不理解的可以參考 官方文檔 ; 不過英文的看著頭大,這里我將其翻譯了
要連接的 SMTP 服務(wù)器端口,如果 connect() 方法沒有明確指定一個(gè)。默認(rèn)為 25 以毫秒為單位的套接字連接超時(shí)值。這個(gè)超時(shí)是由 java.net. 以毫秒為單位的套接字讀取超時(shí)值。這個(gè)超時(shí)是由 java.net. 以毫秒為單位的套接字寫入超時(shí)值。此超時(shí)是通過對(duì)每個(gè)連接使用 java.util.concurrent. 用于 SMTP 命令的電子郵箱地址。這將設(shè)置信封返回地址。默認(rèn)為 msg.getFrom() 或 InternetAddress..smtp. SMTP HELO 或 EHLO 命令中使用的本地主機(jī)名。默認(rèn)為InetAddress.getLocalHost().getHostName(). 如果為 如果為 "LOGIN PLAIN DIGEST-MD5 NTLM" 如果為 如果為 如果為 ,則阻止使用該AUTH DIGEST- 如果為 NTLM 協(xié)議特定標(biāo)志。有關(guān)詳細(xì)信息,請(qǐng)參閱 http: 如果為 ,則阻止使用該AUTHENTICATE XOAUTH2命令。由于 OAuth 2.0”或?qū)ⅰ?smtp.auth. 要在 如果設(shè)置為 ,并且服務(wù)器支持 8BITMIME 擴(kuò)展,則使用“quoted- 如果設(shè)置為 如果設(shè)置為 ,則嘗試使用 javax.security. 用于 DIGEST- 如果設(shè)置為 ,則返回的規(guī)范主機(jī)名將 InetAddress. 如果設(shè)置為 ,則發(fā)送 QUIT 命令并立即關(guān)閉連接。如果設(shè)置為 如果設(shè)置為 如果設(shè)置為 如果設(shè)置為實(shí)現(xiàn)該javax.net. 如果設(shè)置,則指定實(shí)現(xiàn)javax.net. 如果設(shè)置為 ,則無(wú)法使用指定的套接字工廠類創(chuàng)建套接字將導(dǎo)致使用java.net. 如果設(shè)置為 ,則默認(rèn)使用 SSL 連接并使用 SSL 端口?!皊mtp”協(xié)議默認(rèn)為 ,“smtps”協(xié)議默認(rèn)為 如果設(shè)置為 如果設(shè)置,并且未指定套接字工廠,則啟用 MailSSLSocketFactory. 如果設(shè)置為“* 如果設(shè)置為擴(kuò)展 javax.net.ssl. 如果設(shè)置,則指定擴(kuò)展javax.net.ssl. 指定將為 SSL 連接啟用的 SSL 協(xié)議。屬性值是該javax.net.ssl.SSLSocket. 指定將為 SSL 連接啟用的 SSL 密碼套件。屬性值是該javax.net.ssl.SSLSocket. 如果為 .smtp.starttls. 如果為 指定 HTTP Web 代理服務(wù)器的端口號(hào)。默認(rèn)為端口 80 指定 SOCKS5 代理服務(wù)器的端口號(hào)。僅當(dāng)代理服務(wù)器未使用標(biāo)準(zhǔn)端口號(hào) 1080 附加到 1869 如果設(shè)置為 (默認(rèn)值),則堅(jiān)持來自 NOOP 命令的 250 以處理以這種方式損壞的服務(wù)器。通常,當(dāng)服務(wù)器超時(shí)連接時(shí),它會(huì)發(fā)送 421.sun...sun...sun...sun..smtp.
spring..host=smtp.163.spring..port=25spring..protocol=spring..username=spring..password=spring..-encoding=UTF-8spring..properties..smtp.from=antladdie@163.spring..properties..smtp.auth=spring..properties..smtp.timeout=60000spring..properties..smtp.connectiontimeout=60000spring..properties..smtp.writetimeout=60000spring..properties..debug=
testMailB() MimeMessage mimeMessage == MimeMessageHelper(mimeMessage, "antladdie@163.com"); messageHelper.setTo("xiaofeng504@qq.com"); messageHelper.setCc("xiaofeng500@qq.com"); messageHelper.setBcc("575814158@qq.com"); messageHelper.setSubject("繳費(fèi)通知"); String rootPath = Objects.requireNonNull(SpringbootJakartamailApplicationTests..getClassLoader().getResource("file"= FileSystemResource( File(rootPath + "/ab.png"= FileSystemResource( File(rootPath + "/student.xls"= FileSystemResource( File(rootPath + "/mu.mp3"= FileSystemResource( File(rootPath + "/redis.zip" messageHelper.setText("", FileSystemResource resPng = FileSystemResource( File(rootPath + "/b.png""p01"
使用模板和不使用模板沒太大區(qū)別,只是使用模板則將xx.html文件渲染成String類型的字符串文本再引用
org.thymeleaf
doctype html><html lang="en" xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Documenttitle>head><body><h2 style=color:#f00;> <span th:text="${message}">span> <img src=cid:p01 alt= style=width:200px;height:50px;>h2>body>html>
ClassLoaderTemplateResolver resolver = resolver.setPrefix("/file/"".html" TemplateEngine engine = Context context = context.setVariable("message","欠費(fèi)通知:你已經(jīng)欠費(fèi)100元" engine.process("emailTemplate"
講到這,已經(jīng)對(duì)SpringBoot集成郵件發(fā)送功能說完了,若想知道如何接收并解析郵件請(qǐng)參考我上面給出的博客,使用javaMail發(fā)送和接收郵件;不過話說回來在大部分公司里使用SMTP、POP3協(xié)議發(fā)送和接收是完全夠用的,不過我上次在項(xiàng)目組負(fù)責(zé)郵箱的發(fā)送使用的是內(nèi)網(wǎng)的企業(yè)郵箱,走的是Exchange協(xié)議,這個(gè)就和我們之前講的不一樣的,下一篇我將帶大家看看如何使用Exchange方法發(fā)送郵件。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/125685.html
摘要:對(duì)提供了很好的支持,對(duì)其做了起步依賴。構(gòu)架工程創(chuàng)建一個(gè)工程,在其文件加入添加配置在中填寫自己的郵箱密碼。啟用設(shè)置附件發(fā)送郵件郵件已發(fā)送測(cè)試已全部通過,沒有坑。 springboot對(duì)JMS提供了很好的支持,對(duì)其做了起步依賴。 構(gòu)架工程 創(chuàng)建一個(gè)springboot工程,在其pom文件加入: org.springframework.boot spring-boot-st...
摘要:集成上服務(wù)在我的應(yīng)用中希望能使用一些的特性比如這樣的數(shù)據(jù)結(jié)構(gòu)如果能方便的在開發(fā)環(huán)境中使用起來就好了如何集成呢這里依然使用和來幫忙通過使用我們就能快速的部署好服務(wù)而通過使用我們能快速的把集成進(jìn)我們的服務(wù)并能使用提供的模板方法方便的調(diào)用的使用快 SpringBoot集成Docker上Redis服務(wù) 在我的應(yīng)用中, 希望能使用一些redis的特性:比如zset這樣的數(shù)據(jù)結(jié)構(gòu),如果能方便的在開...
摘要:在很多服務(wù)中我經(jīng)常需要用到發(fā)送郵件功能,所幸的是可以快速使用的框架,只要引入改框架我們可以快速的完成發(fā)送郵件功能。引入獲取郵件發(fā)送服務(wù)器配置在國(guó)內(nèi)用的最多的就是郵件和網(wǎng)易郵件,這里會(huì)簡(jiǎn)單講解獲取兩家服務(wù)商的發(fā)送郵件配置。 showImg(https://segmentfault.com/img/remote/1460000018819338?w=1024&h=500); 在很多服務(wù)中我...
閱讀 845·2023-04-25 19:43
閱讀 4110·2021-11-30 14:52
閱讀 3920·2021-11-30 14:52
閱讀 4024·2021-11-29 11:00
閱讀 3918·2021-11-29 11:00
閱讀 4036·2021-11-29 11:00
閱讀 3752·2021-11-29 11:00
閱讀 6599·2021-11-29 11:00