有时候我们会遇到自动发送邮件通知、邮件验证码、节假日祝福邮件发送、邮件自动发送广告功能,今天我们就谈谈邮件自动发送是怎么实现的。案例使用Java语言来编写,使用springBoot来搭建项目。
步骤一:添加邮件依赖:spring-boot-starter-mail,如下图:
如上图所示,添加项目使用到的依赖。
步骤二:在配置文件编写邮箱信息,我这里使用yml文件格式,如下图:
步骤三:在邮箱获取授权码,这里使用qq邮箱,如下图:
1. 获取授权码入口:
2. 开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
步骤三:代码的编写,这里只写一个简单的示例,大家可以自行扩展,如下图:
1. 邮件发送工具类编写
代码全:
package com.common.common.utils;import org.springframework.mail.SimpleMailMessage;/*** <Description> 右键发送工具* @author WEIQI* @version V1.0* @createDate 2019-06-14 16:06* @see com.common.common.utils*/
public class SendMailUtil {/*** Description 邮件发送自定义方法* @author WEIQI* @param subject 邮件标题* @param text 邮件内容* @createDate 2019/6/14 17:03**/public SimpleMailMessage sendIdentifyingCode(String subject, String text) {SimpleMailMessage simpleMailMessage = new SimpleMailMessage();simpleMailMessage.setSubject(subject);simpleMailMessage.setText(text);simpleMailMessage.setFrom("627501768@qq.com");simpleMailMessage.setTo("WEI_QI@vip.163.com");return simpleMailMessage;}
}
2. 自动发送邮件定时任务
代码全:
package com.common.common.utils;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;/*** <Description> 邮件定时发送* @author WEIQI* @version V1.0* @createDate 2019-06-14 17:06* @see com.common.common.utils*/
@Component
@EnableScheduling
public class SendMailTask {private static Log log = LogFactory.getLog(SendMailTask.class);@AutowiredJavaMailSenderImpl javaMailSender;@Value("${mail.subject}")String subject;@Value("${mail.sendText}")String sendText;/*** Description 邮件发送定时任务,示例中每隔五秒执行一次* @author WEIQI* @param* @createDate 2019/6/14 17:38**/@Scheduled(cron = "*/5 * * * * ?")public void timingSendMail() {log.info("*** 邮件发送定时任务 ***");javaMailSender.send(new SendMailUtil().sendIdentifyingCode(subject, sendText));}
}
3. 配置文件信息
spring:application:name: commonmail:username: 627501768@qq.compassword: "你的授权码"host: smtp.qq.comproperties:smtp:ssl:enable: true
server:port: 8083
eureka:client:service-url:defaultZone: http://weiqi:weiqi123456@localhost:8761/eureka# 项目常量配置
mail:subject: "国庆节快乐"sendText: "∴★*°☆∴ 提前祝您国庆节快乐 ∴☆ *★∴"
步骤四:测试
启动项目查看设定的邮箱,收到我们自定义的邮件,如图所示:
按照上面操作,你就可以自己实现一个简单的邮件自动发送系统,如果想要更复杂的业务逻辑,可以自己做扩展。
消息可以设置的参数如下图,可以自行设置:
你也可以根据自己的使用场景,添加更多工具类,比如:邮件验证码、节假日祝福邮件定时发送、推销广告等等。