记网站开启邮件订阅

2020-06-30 10:16:15  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处


一、背景

    我一直在思考一个关于订阅和推送的解决方案。在我的规划中,应该有qq分享、邮件推送、公众号消息等。

其中,qq分享已经做出来了,公众号由于注册主题原因在推送方面不是太友好所以暂时搁置。

    今天把邮件推送模块规划并做了简单实现,这里做一下简要记录。

PS:关于我之前的一篇邮件发送的文章,详细地址为:http://www.guangmuhua.com/articleDetail/135

二、准备工作

    之前的实现是使用的jdk自带的mail进行的处理,而目前的springboot已经对邮件有了比较好的集成,所以这里

使用的是 spring-boot-starter-mail

    ①邮箱配置(这里以QQ邮箱为例)

        登录QQ邮箱,到设置里面,开启SMTP服务,并且获取授权码。详情见文章附图

        

    ②项目中引入依赖

        <!-- mail -->
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
    
    ③yml文件配置


    #邮件发送配置

mail:
default-encoding: UTF-8
host: smtp.qq.com
username: guangmuhua@foxmail.com
password: blzqonmxijixbabc
properties.mail.smtp.ssl.trust: smtp.qq.com
#SSL证书Socket工厂
properties:
mail:
smtp:
socketFactory:
class: javax.net.ssl.SSLSocketFactory
#使用SMTPS协议465端口
port: 465
auth: true
starttls:
enable: true
required: true

    PS:邮件发送默认端口为25,但是阿里云服务器是封禁这个端口的,可能你在本机上运行没问题但是部署到线上就会提示邮件发送

        连接超时。所以这里我们直接配置为SSL、465端口

三、附上核心代码段

    /**
* 功能描述: 邮件发送
* Param: [mailMqDTO]
* Return: void
*/
public void sendMail(MailMqDTO mailMqDTO) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
//配置地址来源
helper.setFrom("guangmuhua@foxmail.com");
//发送邮箱地址
helper.setTo(mailMqDTO.getToMailAddress());
//邮箱标题
helper.setSubject(mailMqDTO.getTitle());
//邮箱内容
helper.setText(mailMqDTO.getContent(), true);
//发送
javaMailSender.send(mimeMessage);
}

四、初步完成,后续持续跟进完善,敬请期待!


最新评论: