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