摘要:協(xié)議默認為,協(xié)議默認為如果設置為如果設置,并且未指定套接字工廠,則啟用如果設置為如果設置為擴展如果設置,則指定擴展指定將為連接啟用的協(xié)議。
在日常中的工作中難免會遇到程序集成郵件發(fā)送功能、接收功能;此篇文章我將使用SpringBoot集成郵件發(fā)送功能和接收功能;若對郵件一些基本協(xié)議和發(fā)送流程不懂的請務必參考我之前寫的博客或者瀏覽網(wǎng)上資料。
【郵件基本概念及發(fā)送方式】 【JavaMail發(fā)送郵件(超詳細)】
在我們現(xiàn)在使用的SpringBoot的版本中,底層發(fā)送郵件的技術都是使用一個叫 Jakarta Mail 的,它可有實現(xiàn)SMTP、POP、IMAP等基本的郵件發(fā)送和接收協(xié)議,因為前兩篇我都介紹了,這里就不在多說,直接上干貨!!
使用SpringBoot腳手架創(chuàng)建一個SpringBoot項目后導入下面郵件發(fā)送坐標,或者在腳手架創(chuàng)建中也可有選擇
org.springframework.boot
在發(fā)送郵件前我簡單說說JavaMailSender和JavaMailSenderImpl;它們是Spring官方提供的一套郵件功能集成接口及實現(xiàn),底層調用具體的Jakarta Mail技術;可以說是二次封裝;使用SpringBoot提供的接口及實現(xiàn)是后端郵件發(fā)送最主流的集成工具;我們在業(yè)務里直接注入JavaMailSenderImpl后并調用send方法。其中簡單的郵件我們可以通過SimpleMailMessage來發(fā)送,對于復雜的帶有附件的我們可以借助MimeMessageHelper來構建MimeMessage發(fā)送郵件。
spring..host=smtp.163.spring..username=spring..password=xxxxxxxxxxxxxxx
SimpleMailMessage message = "[email protected]"); message.setTo("[email protected]"); message.setCc("[email protected]"); message.setBcc("[email protected]"); message.setSubject("繳費通知"); message.setText("您手機已欠費100元,請及時繳費!"); message.setSentDate( Date());
這里的 Jakarta Mail 的 properties 擴展配置不理解的可以參考 官方文檔 ; 不過英文的看著頭大,這里我將其翻譯了
要連接的 SMTP 服務器端口,如果 connect() 方法沒有明確指定一個。默認為 25 以毫秒為單位的套接字連接超時值。這個超時是由 java.net. 以毫秒為單位的套接字讀取超時值。這個超時是由 java.net. 以毫秒為單位的套接字寫入超時值。此超時是通過對每個連接使用 java.util.concurrent. 用于 SMTP 命令的電子郵箱地址。這將設置信封返回地址。默認為 msg.getFrom() 或 InternetAddress..smtp. SMTP HELO 或 EHLO 命令中使用的本地主機名。默認為InetAddress.getLocalHost().getHostName(). 如果為 如果為 "LOGIN PLAIN DIGEST-MD5 NTLM" 如果為 如果為 如果為 ,則阻止使用該AUTH DIGEST- 如果為 NTLM 協(xié)議特定標志。有關詳細信息,請參閱 http: 如果為 ,則阻止使用該AUTHENTICATE XOAUTH2命令。由于 OAuth 2.0”或將“.smtp.auth. 要在 如果設置為 ,并且服務器支持 8BITMIME 擴展,則使用“quoted- 如果設置為 如果設置為 ,則嘗試使用 javax.security. 用于 DIGEST- 如果設置為 ,則返回的規(guī)范主機名將 InetAddress. 如果設置為 ,則發(fā)送 QUIT 命令并立即關閉連接。如果設置為 如果設置為 如果設置為 如果設置為實現(xiàn)該javax.net. 如果設置,則指定實現(xiàn)javax.net. 如果設置為 ,則無法使用指定的套接字工廠類創(chuàng)建套接字將導致使用java.net. 如果設置為 ,則默認使用 SSL 連接并使用 SSL 端口?!皊mtp”協(xié)議默認為 ,“smtps”協(xié)議默認為 如果設置為 如果設置,并且未指定套接字工廠,則啟用 MailSSLSocketFactory. 如果設置為“* 如果設置為擴展 javax.net.ssl. 如果設置,則指定擴展javax.net.ssl. 指定將為 SSL 連接啟用的 SSL 協(xié)議。屬性值是該javax.net.ssl.SSLSocket. 指定將為 SSL 連接啟用的 SSL 密碼套件。屬性值是該javax.net.ssl.SSLSocket. 如果為 .smtp.starttls. 如果為 指定 HTTP Web 代理服務器的端口號。默認為端口 80 指定 SOCKS5 代理服務器的端口號。僅當代理服務器未使用標準端口號 1080 附加到 1869 如果設置為 (默認值),則堅持來自 NOOP 命令的 250 以處理以這種方式損壞的服務器。通常,當服務器超時連接時,它會發(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, "[email protected]"); messageHelper.setTo("[email protected]"); messageHelper.setCc("[email protected]"); messageHelper.setBcc("[email protected]"); messageHelper.setSubject("繳費通知"); 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","欠費通知:你已經(jīng)欠費100元" engine.process("emailTemplate"
講到這,已經(jīng)對SpringBoot集成郵件發(fā)送功能說完了,若想知道如何接收并解析郵件請參考我上面給出的博客,使用javaMail發(fā)送和接收郵件;不過話說回來在大部分公司里使用SMTP、POP3協(xié)議發(fā)送和接收是完全夠用的,不過我上次在項目組負責郵箱的發(fā)送使用的是內網(wǎng)的企業(yè)郵箱,走的是Exchange協(xié)議,這個就和我們之前講的不一樣的,下一篇我將帶大家看看如何使用Exchange方法發(fā)送郵件。
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/125685.html
摘要:對提供了很好的支持,對其做了起步依賴。構架工程創(chuàng)建一個工程,在其文件加入添加配置在中填寫自己的郵箱密碼。啟用設置附件發(fā)送郵件郵件已發(fā)送測試已全部通過,沒有坑。 springboot對JMS提供了很好的支持,對其做了起步依賴。 構架工程 創(chuàng)建一個springboot工程,在其pom文件加入: org.springframework.boot spring-boot-st...
摘要:集成上服務在我的應用中希望能使用一些的特性比如這樣的數(shù)據(jù)結構如果能方便的在開發(fā)環(huán)境中使用起來就好了如何集成呢這里依然使用和來幫忙通過使用我們就能快速的部署好服務而通過使用我們能快速的把集成進我們的服務并能使用提供的模板方法方便的調用的使用快 SpringBoot集成Docker上Redis服務 在我的應用中, 希望能使用一些redis的特性:比如zset這樣的數(shù)據(jù)結構,如果能方便的在開...
摘要:在很多服務中我經(jīng)常需要用到發(fā)送郵件功能,所幸的是可以快速使用的框架,只要引入改框架我們可以快速的完成發(fā)送郵件功能。引入獲取郵件發(fā)送服務器配置在國內用的最多的就是郵件和網(wǎng)易郵件,這里會簡單講解獲取兩家服務商的發(fā)送郵件配置。 showImg(https://segmentfault.com/img/remote/1460000018819338?w=1024&h=500); 在很多服務中我...
閱讀 740·2023-04-25 19:43
閱讀 3986·2021-11-30 14:52
閱讀 3816·2021-11-30 14:52
閱讀 3873·2021-11-29 11:00
閱讀 3809·2021-11-29 11:00
閱讀 3907·2021-11-29 11:00
閱讀 3584·2021-11-29 11:00
閱讀 6197·2021-11-29 11:00