一、准备工作
1、作者使用的是163邮箱进行邮件发送,以下是截图步骤获取邮件发送需要的参数
进入到设置选项
选择邮件协议选项
选择任意一种协议开启
继续下一步
然后用手机发送 信息到指定账号
最后163邮箱会提供一个16位大写的字符串作为密码。
接着查找163邮箱开启协议的端口 和服务器名称,这里直接贴出来吧
服务器地址:
POP3服务器: pop.163.com
SMTP服务器: smtp.163.com
IMAP服务器: imap.163.com
安全支持:
POP3/SMTP/IMAP服务全部支持SSL连接
端口 SMTP协议是 465/994 IMAP 993 POP3 995
2.在pom中导入rabbit依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
导入 邮件服务依赖 和 thymeleaf(用来构建邮件模板)
<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>
3.安装rabbitMq 作者是在windows上安装的 小伙伴可以自行百度安装下哈 ,这里也友情提供下链接
https://blog.csdn.net/zhm3023/article/details/82217222 (@zhm3023 这是出处)
二、配置邮件相关参数和rabbitMq参数
server.port=8082
spring.mail.host=smtp.163.com
spring.mail.username=xuyadonge@163.com
spring.mail.port=465
spring.mail.default-encoding=UTF-8
spring.mail.password=LCRLIVVHKIJHVIGE
#注意此处一定是smtps 不能写 smtp 否则会报 465端口错误连接不到邮件服务
spring.mail.protocol=smtps
spring.mail.properties.mail.debug=true
spring.mail.properties.mail.stmp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.port=5672
spring.rabbitmq.host=localhost
三、首先创建邮件接收者
1、创建rabbitMq 发送消息的队列
import org.springframework.amqp.core.Queue;
@Bean
Queue queue(){
return new Queue("dong.mail");
}
2.使用rabbitMq监听队列来接收邮件
PS: mailProperties 实际上mail相关的配置是配置在这里面的
@Component
public class MailReceiver {
public static final Logger log = LoggerFactory.getLogger(MailReceiver.class);
@Autowired
JavaMailSender javaMailSender;
@Autowired
MailProperties mailProperties;
@Autowired
TemplateEngine templateEngine;
@RabbitListener(queues = "dong.mail")
public void handler(User user){
//创建要发送的信息 MimeMessage构建邮件,MimeMessageHelper构建邮件收发信息
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
try {
helper.setSubject("一封新的邮件");
helper.setTo("1037421515@qq.com");
helper.setFrom(mailProperties.getUsername());
Context context = new Context();
context.setVariable("name", user.getName());
String mail = templateEngine.process("mail", context);
helper.setText(mail, true);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
log.error("邮件发不出去啦!");
}
}
3.邮件发送
@Autowired
RabbitTemplate rabbitTemplate;
public void sendMail(){
User user = new User();
user.setName("小许");
rabbitTemplate.convertAndSend('dong.mail',user);
}
4.邮件模板
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>代码合并冲突提醒</title>
</head>
<body>
<span th:text="${name}"></span> 您的代码在release-0911和小王冲突,冲突代码如下
<table border="1">
<tr>
<td>com.dong.vhemailserver.receiver.MailReceiver</td>
<td>RespBean.ok("修改成功");</td>
<td th:text="${name}"></td>
</tr>
<tr>
<td>com.dong.vhemailserver.receiver.MailReceiver</td>
<td>RespBean.error("修改失败");</td>
<td th:text="小王"></td>
</tr>
</table>
<p>请抓紧时间解决!</p>
</body>
</html>
四、发送效果
作者是发送到qq邮箱的