admin管理员组

文章数量:1559090

背景

正好上个月公司有个项目时发送邮件的,在发送邮件的坑里爬了好几天,全靠自己,一点点填完整,最值得注意的地方是腾讯企业邮箱与其他邮箱发送邮件的方式有所不同,搜集了大量的文章,实践了很多,才总结出了这些,若有所帮助,请点点赞,给我努力下去的动力

概述

springboot-email是基于springboot环境集成java mail,并实现了邮件发送功能,包括简易邮件发送、html正文邮件发送、内联资源(静态资源)邮件发送、模板邮件发送

相关步骤

引入相关依赖

<!-- 发送邮件-->
	<dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-mail</artifactid>
    </dependency>
    <!-- 使用模板发送邮件内容-->
    <dependency>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-starter-thymeleaf</artifactid>
    </dependency>

如果要正确发送邮件,需要确定qq邮箱的pop3/smtp服务已开启,并获取授权码(当密码使用)

application.yml文件添加配置

spring:
  mail:
    #服务器
    host: smtp.qq.com
    username: test@qq.com
    password: dxbrcmxjktzqbbhj  # 这里qq邮箱开通pop3/smtp提供的授权码,如果邮箱服务商没有授权码,可以使用密码代替
    #端口号465587
    port: 465

邮箱实体类

/**
 * 邮箱实体
 */
@equalsandhashcode(callsuper = true)
@data
public class email extends baseentity {
   
    /**
     * 发送邮箱
     */
    private string from;
    /**
     * 发送人名字
     */
    private string fromname;
    /**
     * 回复谁
     */
    private string replyto;
    /**
     * 接收方邮箱(多个逗号分开)
     */
    private string to;
    /**
     * 抄送方邮箱(多个逗号分开)
     */
    private string cc;
    /**
     * 暗抄送(多个逗号分开)
     */
    private string bcc;
    /**
     * 发送日期
     */
    private date sentdate;
    /**
     * 主题
     */
    private string subject;
    /**
     * 邮件内容
     */
    private string text;
    /**
     * 邮箱附件
     */
    private list<attachment> attachment;
}

抽离发送邮件工具类

注:其中在解析html和上传附件解析文件名时会出现乱码情况,需注意;

@allargsconstructor
@slf4j
public class mailutil {
   
    private javamailsender mailsender;
   
    public static void send(email mail){
   
        if(mail == null || mail.getto() == null || mail.getfrom() == null){
   
            throw new handlerexception("邮件内容有错误!");
        }
        log.info("发送邮件:{}", mail.gettext());
        simplemailmessage message = new simplemailmessage();
        message.setfrom(mail.getfrom());
        message.setsubject(mail.getsubject());
        message.settext(mail.gettext());
        message.setto(mail.getto().split(","));
        if(!stringutils.isempty(mail.getcc())){
   
            message.setcc(mail.getcc().split(","));
        }
        if

本文标签: 腾讯企业邮箱邮箱邮件