新建一个模块mail(与服务端分开来)
导入依赖
org.springframework.boot spring-boot-starter-amqporg.springframework.boot spring-boot-starter-mailorg.springframework.boot spring-boot-starter-thymeleafcom.cinco server-springboot0.0.1-SNAPSHOT
application.yml----mail配置
spring: # 邮件配置 mail: # 邮件服务器地址 host: smtp.qq.com # 协议 protocol: smtp # 编码格式 default-encoding: utf-8 # 授权码(在邮箱开通服务时获取) password: xxxxxxxx # 发送者邮箱地址 username: [email protected] # 端口(不同邮箱端口号不同,这里qq邮箱是587) port: 587
application.yml----rabbitmq配置
# rabbitmq配置(服务端也要配置,因为要传值) rabbitmq: # 用户名 username: admin # 密码 password: admin # 服务器地址,填自己的服务器地址 host: xxxx.xxxx.xxxx.xxxx # 端口 port: 5672
我这里的案例就是插入员工数据时触发邮件发送活动
提前去rabbitmq管理界面新建queue “mail.welcome”
用RabbitListener去监听,一旦服务端发送了消息,邮件就会发送出去
服务端主要逻辑代码
//注入RabbitTemplate @Autowired private RabbitTemplate rabbitTemplate;
if (baseMapper.insert(employee) == 1){ Employee emp = baseMapper.getEmployee(employee.getId()).get(0); //插入成功就把该employee对象发送到“mail.welcome" 这个队列 rabbitTemplate.convertAndSend("mail.welcome",emp); return Result.success("添加成功"); } return Result.error("添加失败!");
邮件发送
@Component public class MailReceiver { //logger日志,出错时方便排错,这个可有可无 public 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 mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(mimeMessage); try { //发件人 helper.setFrom(mailProperties.getUsername()); //收件人 helper.setTo(employee.getEmail()); //主题 helper.setSubject("入职欢迎"); //发送日期 helper.setSentDate(new Date()); //邮件内容 Context context = new Context(); //把需要的信息存到Context对象中(注意这个Context类是thymeleaf包下的) context.setVariable("name",employee.getName()); context.setVariable("posName", employee.getPosition().getName()); context.setVariable("joblevelName", employee.getJoblevel().getName()); context.setVariable("departmentName", employee.getDepartment().getName()); //然后把context传给mail.html String mail = templateEngine.process("mail", context); //true 设置以html形式发送 helper.setText(mail,true); //发送邮件 javaMailSender.send(mimeMessage); LOGGER.info("邮件发送成功"); } catch (MessagingException e) { LOGGER.error("邮件发送失败=========>{}", e.getMessage()); } } }
html信息模板 : mail.html ,主要是把服务端传过来的employee对象信息放进去
入职欢迎邮件 欢迎 加入XXXX大家庭,您的入职信息如下:姓名 职位 职称 部门 我们公司的工作忠旨是严格,创新,诚信,您的加入将为我们带来新鲜的血液,带来创新的思维,以及为我们树立良好的公司形象!希望在以后的工作中我们能够齐心协力,与时俱进,团结协作!同时也祝您在本公司,工作愉快,实现自己的人生价值!希望在未来的日子里,携手共进!
插入员工时就会发送邮件,效果如下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)