SpringBoot整合ActiveMQ实现Email发送:专业负责MQ20年~

javax.mail

依赖__javax.mail + mq

<!--javax.mail-->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
<!--activeMQ-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-pool</artifactId>
        </dependency>

application.properties

#ActiveMQ
spring.activemq.broker-url=tcp://localhost:61616

场景:

用户注册时,需要给用户发送邮件,采用ActiveMQ作为消息中间件

Controller 中的 Producer

//注入JmsTemplate
@Autowired
    private JmsTemplate jmsTemplate;

 @RequestMapping("/register")
    public String register(HttpServletRequest request) throws MessagingException {
        String userName = request.getParameter("username");
        String passWord = request.getParameter("password");
        String email = request.getParameter("email");
        User user = new User();
        user.setUserName(userName);
        user.setPassWord(passWord);
        user.setEmail(email);
        user.setState("0");
        user.setCreateTime(new Date());
        userService.addUser(user);
       // MailUtils.sendMail(email,"欢迎您成为我们的会员");
        /**
         * MQ
         */
        jmsTemplate.send("mail_lp", new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                MapMessage message = session.createMapMessage();
                message.setString("title","注册邮件");
                message.setString("email",email);
                return message;
            }
        });
        return "/success";
    }

Consumer

消费类上必须有 @Component 或者@Service 注解,这样Consumer才会委派给Listener.

@Component
public class Consumer {
    @JmsListener(destination = "mail_lp")
    public void sendMail(Message message) throws JMSException, MessagingException {
        MapMessage mm = (MapMessage) message;
        String title = mm.getString("title");
        String email = mm.getString("email");
        MailUtils.sendMail(email,title);
    }
}

MailUtils

public class MailUtils {

    public static void sendMail(String email, String emailMsg)
            throws AddressException, MessagingException {
        // 1.创建一个程序与邮件服务器会话对象 Session

        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "SMTP");
        props.setProperty("mail.host", "smtp.126.com");
        props.setProperty("mail.smtp.auth", "true");// 指定验证为true

        // 创建验证器
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
             //return new PasswordAuthentication("CalistaAngel", "lp123456");给你们用我的问题也不大毕竟我不是那么小气的人哈哈哈哈哈
                return new PasswordAuthentication("邮箱名", "授权码");
            }
        };

        Session session = Session.getInstance(props, auth);

        // 2.创建一个Message,它相当于是邮件内容
        Message message = new MimeMessage(session);

        message.setFrom(new InternetAddress("CalistaAngel@126.com")); // 设置发送者

        message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者

        message.setSubject("用户注册");
        // message.setText("这是一封激活邮件,请<a href='#'>点击</a>");

        message.setContent(emailMsg, "text/html;charset=utf-8");

        // 3.创建 Transport用于将邮件发送

        Transport.send(message);
    }
}
mq
Email
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 他在为了我们的未来努力 我也要为我们的未来努力
    叶公子哥哥阅读 124评论 0赞 0
  • WWW和浏览器的那些事 时间倒回1995年的春天,那是一个浏览器领域的乱世,随着大神Tim Berners-Lee...
    2MuchT阅读 1,055评论 0赞 3
  • 今天我木子姐又有新的理论发表,作为她的死忠粉我必须要学习啊,各位看官们,不要小看这点屁事哦,关系到健康呢...
    车前小草阅读 633评论 2赞 1
  • 太阳落下山总会有升起来的那一天你和我挥别后还能不能再相见这个问题貌似没有答案有些人一旦错过后再不能走进彼此的视线有...
    简JN阅读 1,369评论 36赞 60

友情链接更多精彩内容