跳到主要内容

一分钟实现springboot发送邮件

· 阅读需 2 分钟
故事的程序猿👨🏻‍💻
一个后端打酱油程序猿

SpringBoot 发送邮件方式有很多,比如:JavaMailSender、JavaMail API 来发送邮件(灵活 🐒,支持发送日程提醒)、Apache Commons Email 库、或者 hutool 封装的 MailUtil 等等。

这里使用Spring Framework 提供 JavaMailSender 因为它最简单和 springboot 无缝集成。

引入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

📮 邮箱配置 。我这里用的腾讯的企业邮箱。

spring:
mail:
host: smtp.exmail.qq.com
username: lichlaughing@lichenghao.cn
password: xxx #一般为授权码
port: 465
protocol: smtp
default-encoding: utf-8
properties:
mail:
smtp:
from: lichlaughing@lichenghao.cn
auth: true
starttls:
enable: true
required: true
ssl:
enable: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory

接下来就可以发送普通的文字邮件了哦。

@Resource
private JavaMailSender javaMailSender;

public void sendMail(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to); // 发给谁
message.setSubject(subject); // 邮件标题
message.setText(content); // 邮件内容
javaMailSender.send(message); // 发送
}

接下来最常用的是发送 html 格式邮件。 使用freemarker模版引擎(还可以用其他的比如thymeleaf) 引入依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

增加一些配置,默认情况下模版会放在 /resources/templates 下

spring:
freemarker:
enabled: true
charset: UTF-8
content-type: text/html
allow-request-override: false
allow-session-override: false
cache: false
check-template-location: true
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: true
prefer-file-system-access: true
suffix: .ftl
settings:
default_encoding: UTF-8
classic_compatible: true

定义一个模板

<html>
<body>
<h3>测试</h3>
<pre>
<code>
{
name:${name}
}
</code>
</pre>
</body>
</html>

发送 html 邮件

public void sendHtmlMail(String to, String subject, AInfo info) {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper;
try {
mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, StandardCharsets.UTF_8.name());
// 发件人,如果不写收件人虽然会收到邮件但是显示无发件人
mimeMessageHelper.setFrom(from);
// 发给谁
mimeMessageHelper.setTo(to);
// 标题
mimeMessageHelper.setSubject(subject);
// 邮件内容,html格式
Template template = freemarkerConfig.getTemplate("模板.ftl");
// 第二个参数可以是对象、map、list等等
String htmlStr = FreeMarkerTemplateUtils.processTemplateIntoString(template, info);
mimeMessageHelper.setText(htmlStr, true);
javaMailSender.send(mimeMessage);
log.info("邮件已经发送给:{}", to);
} catch (Exception e) {
log.error("发送邮件时发生异常!", e);
}
}
文章标题:一分钟实现springboot发送邮件
版权声明:内容遵守
许可协议。转载请注明出处!
侵权提示:部分信息可能来源于网络。如发现有侵权,请随时联系删除!

相关推荐

Nacos2.3.2开启服务端用户认证的坑

Nacos2.3.2开启服务端用户认证的坑

最近升级Nacos服务端到版本2.3.2。但是在开启服务端用户认证的时候出现了问题。

Docusaurus 静态博客系列(1)- 系统搭建

Docusaurus 静态博客系列(1)- 系统搭建

这里介绍使用 Docusaurus ,它是一个用于构建开源项目网站的静态网站生成器。它由 Facebook 开发,旨在简化创建、维护和发布技术文档和项目文档的过程。

Docker常用命令整理

Docker常用命令整理

Docker常用镜像和容器的命令,包括:镜像增删改查导入导出、容器增删改查、网络配置。

使用rss-parser解析rss订阅「Docusaurus」

使用rss-parser解析rss订阅「Docusaurus」

多库龙🐲使用rss-parser解析订阅feed,对于一个后端打酱油来说,写前端代码还是有点费劲的。


神评论