依赖
compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail'
配置
spring:
# 发邮件
mail:
host: smtp.qq.com
port: 587
username: 1185172056@qq.com
password: 不是qq邮箱的密码,是授权码
properties:
smtp:
auth: true
starttls:
enable: true
required: true
# mail:
# smtp:
# ssl:
# enable: true
发送简单文本邮件
package com.futao.springmvcdemo.service.impl
import com.alibaba.fastjson.JSON
import com.futao.springmvcdemo.model.system.MailM
import com.futao.springmvcdemo.model.system.SystemConfig
import com.futao.springmvcdemo.service.MailService
import org.apache.rocketmq.client.producer.DefaultMQProducer
import org.apache.rocketmq.common.message.Message
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Value
import org.springframework.mail.SimpleMailMessage
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.nio.charset.Charset
import javax.annotation.Resource
/**
* @author futao
* Created on 2018/10/17.
*/
@Service
open class MailServiceImpl : MailService {
private val logger = LoggerFactory.getLogger(MailServiceImpl::class.java)
@Value("\${spring.mail.username}")
lateinit var username: String
@Resource
lateinit var sender: JavaMailSender
/**
* 发送简单邮件
*/
override fun sendSimpleEmail(to: Array<String>, cc: Array<String>, subject: String, content: String): Boolean {
return try {
val mailMessage = SimpleMailMessage().apply {
from = username
setTo(*to)
setCc(*cc)
setSubject(subject)
text = content
}
sender.send(mailMessage)
true
} catch (e: Exception) {
logger.error(e.message, e)
false
}
}
发送html邮件
/**
* 发送html邮件
*/
override fun sendHtmlEmail(to: Array<String>, cc: Array<String>, subject: String, content: String, isHtml: Boolean): Boolean {
return try {
val message = sender.createMimeMessage()
MimeMessageHelper(message).apply {
setFrom(username)
setTo(to)
setCc(cc)
setSubject(subject)
setText(content, isHtml)
}
sender.send(message)
true
} catch (e: Exception) {
logger.error(e.message, e)
false
}
}
使用邮件模板发送邮件
- 添加依赖
compile('org.springframework.boot:spring-boot-starter-thymeleaf')
- 配置
spring:
thymeleaf:
cache: true
prefix:classpath: /templates/
mode: HTML
- 新建html模板文件
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<title>Email</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css"
th:href="@{https://cdn.bootcss.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css}"/>
</head>
<style type="text/css">
.full-screen {
height: fit-content;
width: fit-content;
}
.fixed-page {
overflow-x: scroll;
overflow-y: scroll;
}
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto
}
.jumbotron {
padding: 2rem 1rem;
margin-bottom: 2rem;
background-color: #e9ecef;
border-radius: .3rem
}
.jumbotron-fluid {
padding-right: 0;
padding-left: 0;
border-radius: 0
}
</style>
<body class="fixed-page">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#ffffff"
style="font-family:'Microsoft YaHei';">
<div class="jumbotron jumbotron-fluid full-screen">
<div class="container full-screen">
<h3>Hi,
<span th:text="${username}">Developer</span>
</h3>
<p>There is an exception occurred in method
<code style="color: #d57e13;"><span th:text="${methodName}">methodName</span></code>,
the error message is :
</p>
<div>
<pre>
<code style="font-family: 'Source Code Pro';">
<span th:text="${errorMessage}">Error Message</span>
</code>
</pre>
</div>
<span th:text="${occurredTime}">occurredTime</span>
</div>
</div>
</table>
</body>
</html>
/**
* 使用邮件模板发送邮件
*/
override fun sendHtmlEmailWithTemplate(to: Array<String>, cc: Array<String>, subject: String, templatePath: String, context: Context): Boolean {
return try {
val message = sender.createMimeMessage()
MimeMessageHelper(message).apply {
setFrom(username)
setTo(to)
setCc(cc)
setSubject(subject)
setText(template.process(templatePath, context), true)
}
sender.send(message)
true
} catch (e: Exception) {
logger.error(e.message, e)
false
}
}
测试:
下一篇文章将介绍使用消息队列发送邮件