欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringBoot QQ邮箱发送邮件实例代码

程序员文章站 2022-03-21 14:32:06
目录1.获取qq邮箱授权码2.导入邮箱发送依赖启动器3.配置文件yml添加邮件服务配置4.编写接口imailservice5.编写实现mailserviceimpl6.controller调用7.th...

springboot整合邮件任务(qq邮箱发送)

1.获取qq邮箱授权码

SpringBoot QQ邮箱发送邮件实例代码

2.导入邮箱发送依赖启动器

使用定制邮件模板的方法实现通用邮件发送,thymeleaf构建邮件模板需要一起导入依赖。

       <!-- mail -->
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-mail</artifactid>
        </dependency>

        <!-- thymeleaf模板依赖 -->
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-thymeleaf</artifactid>
        </dependency>

3.配置文件yml添加邮件服务配置

# spring配置
spring:
  mail:
    host: smtp.qq.com
    username: ********@qq.com
    # password是第一步qq邮箱开通的smtp服务后得到的客户端授权码
    password: ******************
    default-encoding: utf-8
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
#thymeleaf模板引擎配置太简单,就不贴出来了

4.编写接口imailservice

public interface imailservice {
    void sendhtmlmailthymeleaf(string mailfrom, string mailfromnick, string mailto, string cc, string subject, string content);
}

5.编写实现mailserviceimpl

@service
public class mailserviceimpl implements imailservice {

    /**
     * javamailsender是spring boot在mailsenderpropertiesconfiguration 类中配直好的,该类在 mail
     * 自动配置类 mailsenderautoconfiguration 中导入 因此这里注入 javamailsender 就可以使用了
     */
    @autowired
    private javamailsender mailsender;

    @override
    public void sendhtmlmailthymeleaf(string mailfrom, string mailfromnick, string mailto, string cc, string subject, string content) {
        mimemessage mimemessage = mailsender.createmimemessage();
        try {
            mimemessagehelper mimemessagehelper = new mimemessagehelper(mimemessage, true);
            mimemessagehelper.setfrom(new internetaddress(mailfromnick + " <" + mailfrom + ">"));
            // 设置多个收件人
            string[] toaddress = mailto.split(",");
            mimemessagehelper.setto(toaddress);
            if (!stringutils.isempty(cc)) {
                mimemessagehelper.setcc(cc);
            }
            mimemessagehelper.setsubject(subject);
            // 第二个参数为true表示邮件正文是html格式的,默认是false
            mimemessagehelper.settext(content, true);

            mailsender.send(mimemessage);
        } catch (messagingexception e) {
            system.out.println(e);
        }

    }
}

6.controller调用

    // 发件人要跟yml配置文件里填写的邮箱一致
    string mailfrom = "******@qq.com";
    // 收件人
    string mailto = "******@qq.com,******@qq.com";
    // 抄送(可为空)
    string cc = "******@qq.com";


    // 注入mailservice
    @autowired
    private imailservice mailservice;
  
    // 注入templateengine
    @autowired
    templateengine templateengine;

    @requestmapping("/other/test")//请求路径
    @responsebody
    public void testmail() {

        //注意1:这里我是查询对应的内容,使用富文本编辑器存储html标签的内容
        strategy strategy = strategyservice.selectstrategybystrategyid(long.valueof(1));
       
        context context = new context(); // 导包是org.thymeleaf.context
        //注意2:获取发送的内容传入thymeleaf模板中
        context.setvariable("content", strategy.getstrategycontent());

        string content = templateengine.process("mailtemplate.html", context);
        //system.out.println(content);

        mailservice.sendhtmlmailthymeleaf(mailfrom, "定义发件人名字", mailto, cc, "定义邮件标题", content);

        system.out.println("邮件发送成功");
    }

7.thymeleaf模板 mailtemplate.html

<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
    <title>邮件发送</title>
</head>

<body>
    <!--使用富文本框包含html标签 使用 th:utext标签 会解析html,显示相应的效果-->
<div th:utext="${content}">some escaped text</div>

</body>

</html>

总结

到此这篇关于springboot qq邮箱发送邮件实例代码的文章就介绍到这了,更多相关springboot 邮箱发信内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

相关标签: springboot 邮件