摘要:在很多服務中我經常需要用到發送郵件功能,所幸的是可以快速使用的框架,只要引入改框架我們可以快速的完成發送郵件功能。引入獲取郵件發送服務器配置在國內用的最多的就是郵件和網易郵件,這里會簡單講解獲取兩家服務商的發送郵件配置。
在很多服務中我經常需要用到發送郵件功能,所幸的是SpringBoot可以快速使用的框架spring-boot-starter-mail,只要引入改框架我們可以快速的完成發送郵件功能。引入mailJar
獲取郵件發送服務器配置org.springframework.boot spring-boot-starter-mail
在國內用的最多的就是QQ郵件和網易163郵件,這里會簡單講解獲取兩家服務商的發送郵件配置。
QQ郵箱等錄QQ郵箱,點擊設置然后選擇賬戶在下方可以看到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務,然后我們需要把smtp服務開啟,開啟成功后會得到一個秘鑰。如圖所示:
開啟成功需要在application.properties配置文件中加入相應的配置,以下信息部分需要替換為自己的信息,教程結束下面的賬號就會被停用
spring.mail.host=smtp.qq.com spring.mail.username=6928700@qq.com # 替換為自己的QQ郵箱號 spring.mail.password=owqpkjmqiasnbigc # 替換為自己的秘鑰或授權碼 spring.mail.port=465 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true # sender email.sender=6928700@qq.com # 替換為自己的QQ郵箱號163郵箱
登錄賬戶然后在設置找到POP3/SMTP/IMAP選項,然后開啟smtp服務,具體操作如下圖所示,然后修改對應的配置文件
spring.mail.host=smtp.163.com spring.mail.username=xmsjgzs@163.com # 替換為自己的163郵箱號 spring.mail.password=owqpkj163MC # 替換為自己的授權碼 spring.mail.port=465 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true # sender email.sender=xmsjgzs@163.com # 替換為自己的163郵箱號實現簡單發送郵件
這里發送郵件我們主要用到的是JavaMailSender對象,發送簡單郵件主要是發送字符串內容,復雜的郵件我們可能會添加附件或者是發送HTML格式的郵件,我們先測試簡單的發送,代碼如下:
override fun sendSimple(receiver: String, title: String, content: String) { logger.info("發送簡單郵件服務") val message = mailSender.createMimeMessage() val helper = MimeMessageHelper(message, true) helper.setFrom(sender) helper.setTo(receiver) helper.setSubject(title) helper.setText(content) mailSender.send(message) }
測試代碼
@RunWith(SpringJUnit4ClassRunner::class) @SpringBootTest class MailServiceImplTest { @Autowired lateinit var mailService: MailService @Test fun sendSimple() { mailService.sendSimple("xmsjgzs@163.com", "Hello Kotlin Mail", "SpringBoot Kotlin 專欄學習之JavaMailSender發送郵件") } }
檢查郵件是否收到發送的內容
我們這里用的HTML模板引擎是thymeleaf,大家需要引入一下spring-boot-starter-thymeleaf
org.springframework.boot spring-boot-starter-thymeleaf
有個地方需要注意,SpringBoot項目默認靜態資源都是放在resources/templates目錄下,所以我們編寫的HTML模板就需要放在該目錄下,具體內容如下:
Title Demo
xxx
發送模板郵件主要實現代碼
override fun sendMail(receiver: String, title: String, o: Any, templateName: String) { logger.info("開始發送郵件服務,To:{}", receiver) val message = mailSender.createMimeMessage() val helper = MimeMessageHelper(message, true) helper.setFrom(sender) helper.setTo(receiver) helper.setSubject(title) val context = Context() context.setVariable("title", title) /* * 設置動態數據,這里不建議強轉,具體業務需求傳入具體的對象 */ context.setVariables(o as MutableMap?) /* * 讀取取模板html代碼并賦值 */ val content = templateEngine.process(templateName, context) helper.setText(content, true) mailSender.send(message) logger.info("郵件發送結束") }
測試代碼
@Test fun sendMail() { val model = HashMap() model["name"] = "Tom" model["phone"] = "69288888" mailService.sendMail("xmsjgzs@163.com", "Kotlin Template Mail", model, "mail") }
查看郵件我們可以看到如下內容:
附件的添加也是非常容易的,我需要先把發送的附件放在resources/templates目錄下,然后在MimeMessageHelper對象中設置相應的屬性即可,如下所示:
helper.addAttachment("test.txt", FileSystemResource(File("test.txt")))完整的代碼
package io.intodream.kotlin06.service.impl import io.intodream.kotlin06.service.MailService import org.slf4j.Logger import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Value import org.springframework.core.io.FileSystemResource import org.springframework.mail.javamail.JavaMailSender import org.springframework.mail.javamail.MimeMessageHelper import org.springframework.stereotype.Service import org.thymeleaf.TemplateEngine import org.thymeleaf.context.Context import java.io.File /** * {描述} * * @author yangxianxi@gogpay.cn * @date 2019/4/8 19:19 * */ @Service class MailServiceImpl @Autowired constructor(private var mailSender: JavaMailSender, private var templateEngine: TemplateEngine) : MailService{ val logger : Logger = LoggerFactory.getLogger(MailServiceImpl::class.java) @Value("${email.sender}") val sender: String = "6928700@qq.com" override fun sendSimple(receiver: String, title: String, content: String) { logger.info("發送簡單郵件服務") val message = mailSender.createMimeMessage() val helper = MimeMessageHelper(message, true) helper.setFrom(sender) helper.setTo(receiver) helper.setSubject(title) helper.setText(content) mailSender.send(message) } override fun sendMail(receiver: String, title: String, o: Any, templateName: String) { logger.info("開始發送郵件服務,To:{}", receiver) val message = mailSender.createMimeMessage() val helper = MimeMessageHelper(message, true) helper.setFrom(sender) helper.setTo(receiver) helper.setSubject(title) val context = Context() context.setVariable("title", title) /* * 設置動態數據,這里不建議強轉,具體業務需求傳入具體的對象 */ context.setVariables(o as MutableMap測試代碼?) /* * 添加附件 */ helper.addAttachment("test.txt", FileSystemResource(File("test.txt"))) /* * 讀取取模板html代碼并賦值 */ val content = templateEngine.process(templateName, context) helper.setText(content, true) mailSender.send(message) logger.info("郵件發送結束") } }
package io.intodream.kotlin06.service.impl import io.intodream.kotlin06.service.MailService import org.junit.Test import org.junit.runner.RunWith import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest import org.springframework.test.context.junit4.SpringJUnit4ClassRunner /** * {描述} * * @author yangxianxi@gogpay.cn * @date 2019/4/9 18:38 */ @RunWith(SpringJUnit4ClassRunner::class) @SpringBootTest class MailServiceImplTest { @Autowired lateinit var mailService: MailService @Test fun sendSimple() { mailService.sendSimple("xmsjgzs@163.com", "Hello Kotlin Mail", "SpringBoot Kotlin 專欄學習之JavaMailSender發送郵件") } @Test fun sendMail() { val model = HashMap() model["name"] = "Tom" model["phone"] = "69288888" mailService.sendMail("xmsjgzs@163.com", "Kotlin Template Mail", model, "mail") } }
關于Kotlin使用JavaMailSender發送郵件的介紹就到此結束了,如果大家覺得教程有用麻煩點一下贊,如果有錯誤的地方歡迎指出。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74106.html
摘要:前景介紹在日常的工作中,我們經常會用到郵件服務,比如發送驗證碼,找回密碼確認,注冊時郵件驗證等,所以今天在這里進行郵件服務的一些操作。 前景介紹 在日常的工作中,我們經常會用到郵件服務,比如發送驗證碼,找回密碼確認,注冊時郵件驗證等,所以今天在這里進行郵件服務的一些操作。 大致思路 我們要做的其實就是把Java程序作為一個客戶端,然后通過配置SMTP協議去連接我們所使用的發送郵箱(fr...
摘要:調用的默認構造函數,對象在底層通過使用包下的實現創建請求,可以通過使用指定不同的請求方式。接口主要提供了兩種實現方式一種是,使用提供的方式既包提供的方式創建底層的請求連接。 showImg(http://download.qfeoo.com/kotlin_springboot_logo.png); 自從RESTFul API興起后,Spring就給開發者提供了一個訪問Rest的客服端,...
摘要:二教程環境三創建項目創建項目有兩種方式一種是在官網上創建二是在上創建如圖所示勾選然后點,然后一直默認最后點擊完成即可。我們這里看到和普通的接口沒有異同,除了返回類型是用包裝之外。與之對應的還有,這個后面我們會講到。 showImg(https://segmentfault.com/img/remote/1460000018819338?w=1024&h=500); 從去年開始就開始學習...
摘要:我拿網易郵箱賬號舉例子,那么我們如何才能讓你的郵箱賬號可以利用第三方發送郵件這里的第三方就是我們即將編寫的程序。 一 前言 測試所使用的環境 測試使用的環境是企業主流的SSM 框架即 SpringMVC+Spring+Mybatis。為了節省時間,我直接使用的是我上次的SSM項目中整合Echarts開發該項目已經搭建完成的SSM環境。 標題說的四種姿勢指的是哪四種姿勢? 發送text...
摘要:也就是說用戶先將郵件投遞到騰訊的服務器這個過程就使用了協議,然后騰訊的服務器將郵件投遞到網易的服務器這個過程也依然使用了協議,服務器就是用來收郵件。 郵件發送其實是一個非常常見的需求,用戶注冊,找回密碼等地方,都會用到,使用 JavaSE 代碼發送郵件,步驟還是挺繁瑣的,Spring Boot 中對于郵件發送,提供了相關的自動化配置類,使得郵件發送變得非常容易,本文我們就來一探究竟!看...
閱讀 2416·2021-08-18 10:21
閱讀 2525·2019-08-30 13:45
閱讀 2158·2019-08-30 13:16
閱讀 2117·2019-08-30 12:52
閱讀 1366·2019-08-30 11:20
閱讀 2626·2019-08-29 13:47
閱讀 1626·2019-08-29 11:22
閱讀 2762·2019-08-26 12:11