用Maven管理版本,Springboot框架
记得安装RabbitMQ(消息队列),先装Erlang再装RabbitMQ。
1.pom.xml注入依赖
<dependencies>
<!--rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!--mail-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--server-->
<dependency>
<groupId>com.xxx</groupId>
<artifactId>yeb-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
注意这里有需要引用mail服务的server,自己的模块
<dependency> <groupId>com.xxx</groupId> <artifactId>yeb-server</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
根据需要用到邮件服务的Modules
2.在main目录下,新建resources文件夹
application.yml
用个人邮箱发邮件有个缺点,数量多太频繁容易给qq邮箱拦截。
server:
port: 8082
spring:
# 邮箱的IMAP/SMTP服务
# 个人服务练习可用,企业建议用专门的邮箱服务
mail:
host: smtp.163.com
protocol: smtp
default-encoding: utf-8
password: 你的邮箱IMAP/SMTP服务密码
username: 你的邮箱
port: 25
rabbitmq:
username: guest
password: guest
host: 127.0.0.1
# 不能是15672,会出错
port: 5672
邮件模板:
采用的是Thymeleaf
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.theymeleaf.org">
<head>
<meta charset="UTF-8">
<title>欢迎入职邮件</title>
</head>
<body>
欢迎<span th:text="${name}"></span>加入xxxx大家庭,您的信息如下:
<table border="1">
<tr>
<td>姓名</td>
<td th:text="${name}"></td>
</tr>
<tr>
<td>职位</td>
<td th:text="${posName}"></td>
</tr>
<tr>
<td>职称</td>
<td th:text="${joblevelName}"></td>
</tr>
<tr>
<td>部门</td>
<td th:text="${departmentName}"></td>
</tr>
</table>
<p>我们热切希望您有诚实的品质、热情的态度、坚韧的意志、礼貌的言行、快捷的效率、创新的意念以及合作的团队精神,在公司的大舞台上扮演好您的角色!</p>
</body>
</html>
3.启动类
MailApplication.java
必须在代码文件根目录
package com.xxx.mail;
import org.springframework.amqp.core.Queue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.Bean;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MailApplication {
public static void main(String[] args) {
SpringApplication.run(MailApplication.class,args);
}
@Bean
public Queue queue() {
return new Queue("mail.welcome");
}
}
package com.xxx.mail;
import com.xxx.server.pojo.Employee;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.mail.MailProperties;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Date;
/**
* @author li
* @create 2021/6/21 18:39
*/
@Component
public class MailReceiver {
private static final Logger LOGGER = LoggerFactory.getLogger(MailReceiver.class);
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private MailProperties mailProperties;
@Autowired
private TemplateEngine templateEngine;
@RabbitListener(queues = "mail.welcome")
public void handler(Employee employee) {
MimeMessage msg = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg);
try {
//发件人
helper.setFrom(mailProperties.getUsername());
//收件人
helper.setTo(employee.getEmail());
//主题
helper.setSubject("入职欢迎邮件");
//发送日期
helper.setSentDate(new Date());
//邮件内容
Context context = new Context();
context.setVariable("name",employee.getName());
context.setVariable("posName",employee.getPosition().getName());
context.setVariable("joblevelName",employee.getJoblevel().getName());
context.setVariable("departmentName", employee.getDepartment().getName());
//模板名字:mail.xml
String mail = templateEngine.process("mail", context);
//第二个参数是开启html模板
helper.setText(mail,true);
//发送
javaMailSender.send(msg);
} catch (MessagingException e) {
LOGGER.error("邮件发送失败=====>{}",e.getMessage());
}
}
}
引用服务模块
配置:
application.yml
pom.xml
<!--rabbitmq依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
在业务中加入邮件服务
引用代码已copy,记得注入依赖。
@Autowired
private RabbitTemplate rabbitTemplate;
rabbitTemplate.convertAndSend("mail.welcome",emp);
ending…启动Mail服务
Run ‘MailApplication’
安装RabbitMQ可访问以下:
http://127.0.0.1:15672
上面怎么来的?
接着启动引用服务的Server
需要启动两个服务