Springboot集成JavaMail Sender发送邮件

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

生成授权码

Springboot集成JavaMail Sender发送邮件_第1张图片

2、添加JavaMail Sender依赖

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


    org.springframework.boot
    spring-boot-starter-mail

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("[email protected]");
    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("[email protected]");
    message.setTo(to);
    message.setSubject(subject);
    message.setText(text,true);
    mailSender.send(message.getMimeMessage());

}

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

5.1、模板文件



    
   Echo - 激活账号


   

, 您好!

您正在注册 Echo, 这是一封激活邮件, 请点击 此链接, 激活您的 Echo 账号!

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测试

Springboot集成JavaMail Sender发送邮件_第2张图片

你可能感兴趣的:(spring,boot,后端,java)