Springboot 自学(四):邮件服务(QQ邮箱与腾讯企业邮箱为例)

本文档详细介绍了如何在Springboot中集成Java Mail实现邮件发送功能,包括QQ邮箱和腾讯企业邮箱的设置。重点强调了腾讯企业邮箱使用SSL的特殊要求,并提供了配置步骤和注意事项。
摘要由CSDN通过智能技术生成

背景

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

概述

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值