Springboot集成JavaMail Sender发送邮件

发布时间:2024年01月19日

1、开启邮箱的POP3/IMAP/SMTP服务,本地客户端可以收发短信

生成授权码

2、添加JavaMail Sender依赖

spring-boot-starter-mail 是 Spring Boot 的一个 Starter,它提供了集成 JavaMail Sender 和对应配置的自动配置。

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

3、application.properties配置

#这里配置的是qq邮箱
spring.mail.host=smtp.qq.com
spring.main.port=465
spring.mail.username=
  #授权码g,在QQ邮箱客户端生成 修改成自己的  设置-账户-开启服务-获取授权码
spring.mail.password=bhyaiszqhyrqchaj #换成你的授权码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

4、创建邮件工具类

@Autowired
private JavaMailSender mailSender;
//文本内容
public void sendEmail(String to, String subject, String text) {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("your@qq.com");
    message.setTo(to);
    message.setSubject(subject);
    message.setText(text);
    mailSender.send(message);
}

/**html内容
 * 使用mailSender.createMimeMessage()方法创建了一个MimeMessage对象。
 * 然后,通过创建MimeMessageHelper对象,并传入MimeMessage对象,可以使用MimeMessageHelper
 * 对象的方法来设置邮件的各种属性。
 * @param to 目标邮箱
 * @param subject 邮件名
 * @param text  正文
 * @throws MessagingException
 */
public void sendMineEmail(String to, String subject, String text) throws MessagingException {
    MimeMessage mimeMessage = mailSender.createMimeMessage();
    MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
    message.setFrom("yoru@qq.com");
    message.setTo(to);
    message.setSubject(subject);
    message.setText(text,true);
    mailSender.send(message.getMimeMessage());

}

5、使用thymeleaf模板引擎生成内容并填充到邮件中

5.1、模板文件
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
   <title>Echo - 激活账号</title>
</head>
<body>
   <div>
      <p>
         <b th:text="${email}"></b>, 您好! 😃
      </p>
      <p>
         您正在注册 Echo, 这是一封激活邮件, 请点击
         <a th:href="${url}">此链接</a>,
         激活您的 Echo 账号! 🎉
      </p>
   </div>
</body>
</html>
5.2、service层注入模板引擎,工具类
@Autowired
private TemplateEngine templateEngine;#注入模版引擎
@Autowired
EmailMessageUtil emailMessageUtil;#注入工具类
5.3、准备数据模型,通常是 Context 对象,它用于向模板传递变量。
//向用户邮箱发送邮件,激活账户
        Context context=new Context();
        context.setVariable("email", user.getEmail());
        //http://localhost:9000/active/code
        String url="http://"+address+":"+port+"/activation/userId/code";
        context.setVariable("url", url);
        //使用模板引擎生成内容
        String content = templateEngine.process("/mail/activation", context);
        emailMessageUtil.sendMineEmail(user.getEmail(), "激活账户",content);
5.4、调用service测试

文章来源:https://blog.csdn.net/weixin_53333436/article/details/135695184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。