• SpringBoot整合JavaMailSender(发送QQ邮件)



    SpringBoot整合JavaMailSender(发送邮件)

    一、概述

    1、简介

    • SMTP:简单邮件传输协议,用于发送电子邮件的传输协议
    • POP3:用于接收电子邮件的标准协议
    • IMAP:互联网消息协议,是POP3的替代协议

    2、方法

    • 简单邮件
      SimpleMailMessage message = new SimpleMailMessage();
    
    • 1
    • 复杂邮件与附件邮件
       MimeMessage message = javaMailSender.createMimeMessage();
       MimeMessageHelper helper = new MimeMessageHelper(message);
    
    • 1
    • 2
    • 附件邮件
       MimeMessage message = javaMailSender.createMimeMessage();
       MimeMessageHelper helper = new MimeMessageHelper(message,true);
    
    • 1
    • 2

    二、简单邮件发送

    1、pom.xml

     
     <dependency>
         <groupId>org.springframework.bootgroupId>
         <artifactId>spring-boot-starter-mailartifactId>
     dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、application.yml

    spring:
      mail:
        host: smtp.qq.com
        username: 发件人邮箱
        password: 授权密码
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、Service接口类

    package com.sgz.springboot.service;
    
    public interface SendMailService {
        void sendMail();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、ServiceImpl接口实现类

    package com.sgz.springboot.service.impl;
    
    import com.sgz.springboot.service.SendMailService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.stereotype.Service;
    
    
    @Service
    public class SendMailServiceImpl implements SendMailService {
    
        @Autowired
        private JavaMailSender javaMailSender;
    
        // 发送人
        private String from = "发件人邮箱";
        // 接收人
        private String to = "收件人邮箱";
        // 标题
        private String subject = "测试邮件标题";
        // 正文
        private String context = "测试邮件正文内容";
    
        @Override
        public void sendMail() {
        // 创建一个简单邮件
            SimpleMailMessage message = new SimpleMailMessage();
            // 设置发件人
            message.setFrom(from+"(发件人名称)"); // 可以设置发件人名称,要用英文的()  message.setFrom(from+"(发件人名称)");
            // 设置收件人
            message.setTo(to);
            // 设置发送的标题
            message.setSubject(subject);
            // 设置发送的内容
            message.setText(context);
            // 发送邮件
            javaMailSender.send(message);
            System.out.println("发送成功");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    4、测试类

    package com.sgz.springboot;
    
    import com.sgz.springboot.service.SendMailService;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    class ApplicationTests {
    
        @Autowired
        private SendMailService sendMailService;
    
        @Test
        void contextLoads() {
            sendMailService.sendMail();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    三、复杂邮件发送

    3、ServiceImpl接口实现类

    package com.sgz.springboot.service.impl;
    
    import com.sgz.springboot.service.SendMailService;
    import org.springframework.beans.factory.annotation.Autowired;
    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.MessagingException;
    import javax.mail.internet.MimeMessage;
    
    /**
     * 日期:2022/9/6 - 15:35
     * 需求:
     */
    @Service
    public class SendMailServiceImpl implements SendMailService {
    
        @Autowired
        private JavaMailSender javaMailSender;
    
        // 发件人
        private String from = "发件人邮箱";
        // 收件人
        private String to = "收件人邮箱";
        // 标题
        private String subject = "测试邮件标题";
        // 正文
        private String context = " 点开有惊喜 ";
    
        @Override
        public void sendMail() {
        
            // 复杂邮件
            try {
                // 创建一个简单邮件
                MimeMessage message = javaMailSender.createMimeMessage();
                MimeMessageHelper helper = new MimeMessageHelper(message);
                // 设置发件人
                helper.setFrom(from+"(发件人名称)"); // 可以设置发件人名称,要用英文的()  message.setFrom(from+"(发件人名称)");
                // 设置收件人
                helper.setTo(to);
                // 设置发送的标题
                helper.setSubject(subject);
                // 设置发送的内容
                helper.setText(context,true);   // true:有超连接时,解析连接
                // 发送邮件
                javaMailSender.send(message);
                System.out.println("发送成功");
            } catch (MessagingException e) {
                e.printStackTrace();
            }
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56

    四、附件邮件发送

    3、ServiceImpl接口实现类

    package com.sgz.springboot.service.impl;
    
    import com.sgz.springboot.service.SendMailService;
    import org.springframework.beans.factory.annotation.Autowired;
    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.MessagingException;
    import javax.mail.internet.MimeMessage;
    import java.io.File;
    
    @Service
    public class SendMailServiceImpl implements SendMailService {
    
        @Autowired
        private JavaMailSender javaMailSender;
    
        // 发送人
        private String from = "发件人邮箱";
        // 接收人
        private String to = "收件人邮箱";
        // 标题
        private String subject = "测试邮件标题";
        // 正文
        private String context = "测试邮件内容";
    
        @Override
        public void sendMail() {
        
            // 附件邮件
            try {
                // 创建一个简单邮件
                MimeMessage message = javaMailSender.createMimeMessage();
                MimeMessageHelper helper = new MimeMessageHelper(message,true); // true:发送附件时需要添加
                // 设置发件人
                helper.setFrom(from+"(发件人名称)"); // 可以设置发件人名称,要用英文的()  message.setFrom(from+"(发件人名称)");
                // 设置收件人
                helper.setTo(to);
                // 设置发送的标题
                helper.setSubject(subject);
                // 设置发送的内容
                helper.setText(context);   
                // 添加附件
                File file1 = new File("D:\\Java\\SpringBoot\\daily_demo02\\day76_springboot_mail\\target\\day76_springboot_mail-0.0.1-SNAPSHOT.jar");
                File file2 = new File("D:\\Java\\SpringBoot\\daily_demo02\\day76_springboot_mail\\src\\main\\resources\\8.png");
                // 添加附件到邮件
                helper.addAttachment(file1.getName(), file1);
                helper.addAttachment("最好看的壁纸.png", file2);
                // 发送邮件
                javaMailSender.send(message);
                System.out.println("发送成功");
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    vuepress的使用
    计算机毕业设计Java的大学宿舍管理系统(源码+系统+mysql数据库+lw文档)
    谈谈多线程与多线程同步
    Redis 2 - 高级
    系统学习Python——类(class)代码的编写基础与实例:类可以截获Python运算符
    面经-虚拟机-JVM垃圾回收
    下载安装ansible后,缺失pyyaml,pip安装时又出错,升级时又由于时Python2.7,不好升级遇到的一系列问题。
    【网络安全】SSL Pinning及其绕过
    PCL源码分析:直通滤波
    知识图谱--Jena基础操作和检索推理应用
  • 原文地址:https://blog.csdn.net/s17856147699/article/details/126718935