SpringBoot集成邮件发送

版权申明:本文为原创文章,转载请注明原文出处

原文链接:https://blog.it-follower.com/posts/3104081050.html

实际开发中发送邮件是一个非常常见的功能,SpringBoot项目对邮件发送提供了很好的支持,本文将演示如果将发送邮件Mail封装成一个工具,让代码便捷的发送邮件。

添加mail依赖

在pom文件中,添加mail依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

配置邮件相关属性

在项目的yml文件中,配置邮件相关属性

1
2
3
4
5
spring:
mail:
host: smtp.163.com # 邮箱服务器地址
username: your-email@163.com # 用户名
password: your-password # 密码

工具类开发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@Slf4j
public class EmailUtils {

private static JavaMailSender mailSender = SpringUtils.getBean(JavaMailSender.class);

/**
* 执行发送邮件
*
* @param from 发件人
* @param to 收件人
* @param cc 抄送人
* @param subject 主题
* @param content 内容
* @param isHtml 是否为HTML
*/
public static void send(String from, String to, String cc, String subject, String content,
boolean isHtml) {

try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
helper.setFrom(from);
helper.setTo(to);
if (StringUtils.isNoneEmpty(cc)) {
helper.setCc(cc);
}
helper.setSubject(subject);
helper.setText(content, isHtml);
mailSender.send(mimeMessage);
} catch (Exception e) {
log.info("发送邮件失败", e);
}
}
}

其中的SpringUtils如何封装,参见我之前的博客SpringBoot获取上下文中的Bean对象。这样我们就可以愉快的中代码中EmailUtils.send()来发送邮件了。

补充

  • 发送带附件的邮件

    上文EmailUtils工具类中的MimeMessageHelper对象,有一个添加附件的方法,如下使用即可:

    1
    helper.addAttachment("fileName", file);
  • 发送模板邮件

    很多情况,我们发送邮件的格式是相对固定了,我们只需要替换其中的变量即可。这种场景,我们可以使用thymeleaf等来完成,其他模板引擎也可以,可以自行选择

    1、pom中添加依赖

    1
    2
    3
    4
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    2、在resources/templates下创建模板文件myEmail.html

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <!DOCTYPE html>
    <html lang="zh" xmlns:th="http://www.thymeleaf.org">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    <p th:text="'你好:' + ${username} + ',欢迎加入我们'"></p>
    <br/>
    <a href="#" th:href="@{ https://blog.csdn.net/ye17186 }">学习更多内容</a>
    </body>
    </html>

    3、正确使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /**
    * @author ye17186
    * @version 2019/3/4 17:40
    */
    @RestController
    public class EmailController {

    @Autowired
    TemplateEngine templateEngine;

    @PostMapping("test")
    public ApiResp<String> sendEmail() {
    Context context = new Context();
    context.setVariable("username", "yclouds");
    String html = templateEngine.process("MyEmail", context);
    EmailUtils.send("your-email@163.com", "to-email@163.com", "cc-email@163.com", "欢迎加入YClouds", html, true);
    return ApiResp.retOK();
    }
    }

详细用法参照我的Github项目 :https://github.com/ye17186/spring-boot-learn

评论