SpringBoot +RabbitMQ实现邮件发送

SpringBoot +RabbitMQ实现邮件发送,第1张

SpringBoot +RabbitMQ实现邮件发送 SpringBoot +RabbitMQ实现邮件发送

新建一个模块mail(与服务端分开来)

导入依赖

        
        
            org.springframework.boot
            spring-boot-starter-amqp
        
        
        
            org.springframework.boot
            spring-boot-starter-mail
        
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
        
            com.cinco
            server-springboot
            0.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大家庭,您的入职信息如下:

    
        姓名
        
    
    
        职位
        
    
    
        职称
        
    
    
        部门
        
    


我们公司的工作忠旨是严格,创新,诚信,您的加入将为我们带来新鲜的血液,带来创新的思维,以及为我们树立良好的公司形象!希望在以后的工作中我们能够齐心协力,与时俱进,团结协作!同时也祝您在本公司,工作愉快,实现自己的人生价值!希望在未来的日子里,携手共进!

插入员工时就会发送邮件,效果如下

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5704859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存