SpringBoot集成EMail
SpringBoot集成EMail
在大部分项目中,我们都会经常有用到邮件工具;不管是邮件验证码、邮件注册校验、预警通知等服务,都会使用到我们的email来发送邮件。下面我们就来教大家如何使用SpringBoot中使用email来发送邮件:
- 登录需要做完发送邮件的账户,我这边用的是网易邮箱,所以就登录到网易的163邮箱就行,其他邮箱的账户登录到自己所在邮箱网站即可。
- 找到设置==>客户端设置(不同邮箱名字不同,163邮箱则是POP3/SMTP/IMAP),就会看到以下页面,开启需要使用的服务即可,我们这边使用的是IMPAP/SMTP
- 新增授权码,点击新增授权码,按照提示扫码发送短信,或者手动发送短信即可。然后就可以看到您新的授权码了。
- 新增授权码后,记住授权码后面要用。
项目中使用EMail
第一步: 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.3.12.RELEASE</version>
</dependency>
第二步: 配置email发送服务
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("邮件发送失败!");
}
}
发送模板类型的邮件:
- 导入需要的模板依赖
<!-- thymeleaf模板 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.3.12.RELEASE</version>
</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;
}
- HTML页面中使用我们设置的动态参数
<!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.com</p>
<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>
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgffchi
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01