zoukankan      html  css  js  c++  java
  • SpringBoot发送邮件

    通过RabbitMQ来向邮箱随机发送一个验证码

    1、导入相关依赖;

    <!--        邮件发送`-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mail</artifactId>
            </dependency>

    2、准备一个邮箱服务器,QQ邮箱或者163邮箱单都可以;

    开启相关权限:QQ邮箱==》设置==》账户==》开启服务

    3、java mail

    1)配置文件中配置相关配置;

    application.yml

    spring:
      mail:
        username: **********@qq.com  #邮箱账号
        password: dfydrlvrnhxyhdia   #密码
        host: smtp.qq.com    

    2)写一个邮箱的工具类,全部整合好了,只需要配置邮箱,密码即可;

    MailService .java
    package com.seecen.redis.service;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.mail.MailException;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Service;
    
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeUtility;
    import java.io.File;
    import java.util.List;
    
    /**
     * 描述:
     *
     * @author bigpeng
     * @create 2019-12-24 17:39
     */
    @Service("mailService")
    public class MailService {
        @Value("${spring.mail.username}")
        private String from;
        @Autowired
        private JavaMailSender mailSender;
    
        Logger logger = LoggerFactory.getLogger(this.getClass());
    
        /**
         * 发送简单邮件
         * @param to
         * @param title
         * @param content
         */
        public void sendSimpleMail(String to,String title,String content){
    //邮件消息对象
    try { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from);//发送者 message.setTo(to);//接受者 message.setSubject(title);//主题,标题 message.setText(content);//内容 mailSender.send(message); logger.info("邮件发送成功"); } catch (MailException e) { logger.error("邮件发送失败",e); } } /** * 发送带附件的邮件 * @param to * @param title * @param cotent * @param fileList */ public void sendAttachmentsMail(String to, String title, String cotent, List<File> fileList){ MimeMessage message = mailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message,true); helper.setFrom(from); helper.setTo(to); helper.setSubject(title); helper.setText(cotent); String fileName = null; for (File file:fileList) { fileName = MimeUtility.encodeText(file.getName(), "GB2312", "B"); helper.addAttachment(fileName, file); } } catch (Exception e) { e.printStackTrace(); } mailSender.send(message); logger.info("邮件发送成功"); } }

    3)写一个消费者;

    EmailConsumer.java
    package com.seecen.redis.rabbitmq;
    
    
    import com.seecen.redis.service.MailService;
    import io.netty.util.internal.StringUtil;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    import org.thymeleaf.util.StringUtils;
    
    import java.util.Map;
    
    @Component
    public class EmailConsumer {
    
        @Autowired
        private MailService mailService;
        /**
         * 监听对应的队列,有消息时,会触发该方法
         * @param message 用来接收消息内容时,需要与发送时的数据类型一样
         */
        @RabbitListener(queues = {"email.verifyCode"},
                         containerFactory = "rabbitListenerContainerFactory")
        public void sendVerifyCodeEmail(Map<String,String> message){
            //todo 发送邮件验证码
            System.out.println("接收到消息:"+message);
            String email=message.get("email");
            if (!StringUtils.isEmpty(email)) {
                mailService.sendSimpleMail(email,
                        "xx网注册验证码",
                        "您的注册验证码为:" + message.get("code"));
            }
        }
    }

    4)测试结果:

    请求地址:localhost:8888/admin/sendCode?email=*******@qq.com

  • 相关阅读:
    JavaScript的函数(二)
    Python:os.walk()和os.path.walk()用法
    Python:代码单元、代码点介绍
    Python:如何去掉字符串中不需要的字符
    Python:更改字典的key
    Python:如何对字符串进行左、右、居中对齐
    Python:format()方法
    日常开发之缓存技术
    Web系统大规模并发——秒杀与抢购 秒杀系统优化与预防措施
    PHP之位运算符
  • 原文地址:https://www.cnblogs.com/xie-qi/p/13363929.html
Copyright © 2011-2022 走看看