在大部分项目中,我们都会经常有用到邮件工具;不管是邮件验证码、邮件注册校验、预警通知等服务,都会使用到我们的email来发送邮件。下面我们就来教大家如何使用SpringBoot中使用email来发送邮件:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-mailartifactId>
<version>2.3.12.RELEASEversion>
dependency>
spring:
mail:
host: "smtp.163.com" # 发件服务器地址,不同邮件平台地址不同
port: 25 #常用邮件端口25、109、110、143、465、995、993、994 如果开启了SSL安全则使用对应的端口号,25为非加密端口号
username: admin@163.com #发送邮件的账号
password: 123456 #发送邮件账号的授权码,这里的授权码不是验证码.需要到邮箱
default-encoding: utf-8 #设置编码
properties: # 设置邮件超时时间防止服务器阻塞
timeout: 5000
connection-timeout: 5000
write-timeout: 5000
@Autowired
private JavaMailSender mailSender;
public void sendEMail(EMailCmd eMailCmd) {
try {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(sendUserName); //设置发送邮件账号
simpleMailMessage.setTo("123@163.com"); //设置接收邮件的人,可以多个
simpleMailMessage.setSubject(eMailCmd.getSubject()); //设置发送邮件的主题
simpleMailMessage.setText(eMailCmd.getText()); //设置发送邮件的内容
mailSender.send(simpleMailMessage);
} catch (MailException e) {
log.error("邮件发送失败!");
}
}
//发送带HTML内容的邮件
@Autowired
private JavaMailSender mailSender;
public void sendHtmlEMail(EMailCmd eMailCmd) {
try {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper minehelper = new MimeMessageHelper(message, true);
minehelper.setFrom(sendUserName); //设置发送邮件账号
minehelper.setTo(eMailCmd.getTos()); //设置接收邮件的人,可以多个
minehelper.setSubject(eMailCmd.getSubject()); //设置发送邮件的主题
minehelper.setText(eMailCmd.getText(),true); //设置发送邮件的内容 第二个设置为true则可以发送带HTML的邮件
mailSender.send(message);
} catch (MessagingException e) {
log.error("邮件发送失败!");
}
}
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
<version>2.3.12.RELEASEversion>
dependency>
spring:
thymeleaf:
cache: false
mode: LEGACYHTML5 #类型
prefix: classpath:/templates/ #模板存放的位置
suffix: .html #模板的后缀
@Autowired
private TemplateEngine templateEngine;
/**
* 获得验证码模板
*
* @param email 用户邮箱
* @param code 验证码
* @param timeout 超时时间
* @return
*/
public String getCaptchaTempl(String email, String code, int timeout) {
Context context = new Context();
//设置模板所需的参数
context.setVariable("title","验证码");
context.setVariable("email",email);
context.setVariable("code",code);
context.setVariable("date",DateUtils.format(new Date(),"yyyy-MM-dd hh:mm:ss"));
//通过模板类将动态参数传入HTML模板,并返回模板内容 参数一:模板名字,参数二:动态参数Web文本
String content = templateEngine.process("/mailCode", context);
return content;
}
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>[[${title}]]title>
head>
<body>
<div style="background-color:#ECECEC; padding: 15px;">
<table cellpadding="0" align="center"
style="width: 600px; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family:微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial;background:#fff;">
<tbody>
<tr>
<th valign="middle"
style="height: 25px; line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #42a3d3; background-color: #49bcff; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px;">
<font face="微软雅黑" size="5" style="color: rgb(255, 255, 255); ">邮箱注册font>
th>
tr>
<tr>
<td>
<div style="padding:25px 35px 40px; background-color:#fff;">
<h2 style="margin: 5px 0px; ">
<font color="#333333" style="line-height: 20px; ">
<font style="line-height: 22px; " size="4">
亲爱的<b>[[${email}]]b>用户,您好:font>
font>
h2>
<p>首先感谢您加入本商城!请在验证页面输入以下验证码:<br>
<b style="font-size: 18px">[[${code}]]b><br>
本验证码5分钟内有效,为了保障您的账户安全,请勿向任何人提供此验证码。感谢您的支持!<br>
如果您有什么疑问可以联系管理员,Email: admin@163.comp>
<p align="right">商城p>
<p align="right">[[${date}]]p>
<div style="width:700px;margin:0 auto;">
<div style="padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;">
<p>本邮件系统自动发送,请勿回复!<br>
请保管好您的邮箱,避免账号被他人盗用
p>
<p>©***p>
div>
div>
div>
td>
tr>
tbody>
table>
div>
body>
html>