美文网首页
SpringBoot 发送邮件

SpringBoot 发送邮件

作者: Mango_Big | 来源:发表于2020-07-21 23:31 被阅读0次

    1.发送邮件之前的准备

    申请一个邮箱账号 ,我这里使用的是网易邮箱

    修改网易邮箱的设置 进去之后默认是关闭的需要开启他 POP3/SMTP服务 开启的时候有一个授权码,记录好他,下面要用到

    微信截图_20200721225937.png

    有的邮箱设置可能需要保存,记得保存修改

    2. 代码的编写

    在pom.xml中引入依赖

    <dependency>
          <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-mail</artifactId>
           <version>2.3.1.RELEASE</version>
    </dependency>
    

    编写application.yml文件

    spring: 
        mail:
            host: smtp.163.com                         # 你使用的邮箱的域名
            port: 465                                  # 邮箱的端口一般都是465 不知道可以查一下
            username: XXXX@163.com              # 你的邮箱账号
            password: XXXXX                     # 上面开启的时候保存的授权码  
            protocol: smtp                             # 发送邮件的协议
            properties.mail.smtp.ssl.enable: true      #开启SSL安全连接
    

    发送邮件的客户端类

    @Component  //这个类会别spring托管,在这个项目中所有地方都可以使用,只需要注入一下即可
    public class MailClient {
    
        private static final Logger logger = LoggerFactory.getLogger(MailClient.class);
    
        /**
         * 发送邮件的核心组件
         */
        @Autowired
        private JavaMailSender mailSender;
        /**
         * 邮件发件人
         */
        @Value("${spring.mail.username}") //这里是从application.yml中取得值springboot 中可以使用@Value 来获取到yml文件中的值 spring.mail.username 就是他的key
        private String from;
    
        /** 发送邮件的方法
         * @param to  发送给谁
         * @param subject  邮件主题
         * @param content  邮件内容
         */
        public void sendMail(String to,String subject,String content){
            try {
                //创建一个发送邮件的类
                MimeMessage message = mailSender.createMimeMessage();
                //使用发送邮件的帮助类
                MimeMessageHelper helper = new MimeMessageHelper(message);
                //发送人
                helper.setFrom(from);
                //接收人
                helper.setTo(to);
                //发送的主题
                helper.setSubject(subject);
                //以html的形式的邮件内容
                helper.setText(content,true);
                //发送邮件
                mailSender.send(helper.getMimeMessage());
            } catch (MessagingException e) {
                logger.error("发送邮件失败"+e.getMessage());
            }
        }
    }
    

    好了现在发送邮件的功能已经写完了,现在测试一下吧

    3. 测试邮件发送功能

    新建一个测试类

    @Autowired
        private MailClient mailClient; //将刚才写好的邮件发送的客户端注入进来
    
    @Test  //测试发送一个普通文本的邮件
        public void sendMailText(){
            mailClient.sendMail("你要发送邮件的邮箱","测试","我在测试啊");
        }
    
    微信截图_20200721231516.png

    是不是很神奇,收到了邮件了,那么接下来我们来试试发送一个html的邮件看看

    在templates新建一个mail 文件夹,建一个名为demo.html的文件

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>邮件发送例子</title>
    </head>
    <body>
        <p>欢迎 <span style="color: red" th:text="${username}"></span>使用我的邮箱!</p>
    </body>
    </html>
    

    回到我们的测试类

    
    import org.thymeleaf.TemplateEngine;
    import org.thymeleaf.context.Context;
    
    
    @Autowired
        private MailClient mailClient;
        //模板引擎 这是springboot 已经将thymeleaf封装成了一个对象,可以直接使用他```
        @Autowired  
        private TemplateEngine templateEngine;
        
       
    @Test
        public void sendHTMLMail(){
            Context context = new Context();  //在这里我们是将html要获取的username传进去
            context.setVariable("username","小王");
            String content = templateEngine.process("/mail/demo", context);//指定他的html路径,并且将我们设置的一个信息给他
            System.out.println(content); //在控制台打印一下看看
            mailClient.sendMail("你要发送的邮箱","HTML发送",content); //执行发送邮件的方法
    
        }
    

    在这里一定要注意不要导错包了,我们用的是thymeleaf的,所以要到thymeleaf的包
    在检查一下有没有收到邮件

    1595345117(1).jpg

    收到邮件了
    好了,现在spring boot 发送邮件功能已经完成了,快去发邮件把!

    相关文章

      网友评论

          本文标题:SpringBoot 发送邮件

          本文链接:https://www.haomeiwen.com/subject/qlwgkktx.html