栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot邮件发送

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力
一、前言

我们经常会听到各种各样的邮件协议,比如 SMTP、POP3、IMAP ,那么这些协议有什么作用,有什么区别?我们先来讨论一下这个问题。
SMTP 是一个基于 TCP/IP 的应用层协议,江湖地位有点类似于 HTTP,SMTP 服务器默认监听的端口号为25
SMTP 协议全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与 SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。SMTP 服务器就是用来收邮件。
而 POP3 协议全称为 Post Office Protocol ,译作邮局协议,它定义了邮件客户端与 POP3 服务器之间的通信规则,如果用户要读取邮件,就需要通过邮件服务商的 POP3 邮件服务器来完成。
最后,可能也有小伙伴们听说过 IMAP 协议,这个协议是对 POP3 协议的扩展,功能更强,作用类似。

二、准备工作

目前国内大部分的邮件服务商都不允许直接使用用户名/密码的方式来在代码中发送邮件,都是要先申请授权码,这里以 QQ 邮箱为例,向大家演示授权码的申请流程:

  1. 首先我们需要先登录 QQ 邮箱网页版,点击上方的设置按钮,再点击账户按钮

  2. 在账户选项卡中找到开启POP3/SMTP选项,点击开启

  3. 发送短信验证后回得到一个授权码,将授权码复制保存

三、项目创建 3.1 简单邮件的发送
  1. 创建springboot项目,导入邮件发送依赖和SpringWeb依赖
  2. 在application.properties中配置邮箱基本信息
#配置 SMTP 服务器地址
spring.mail.host=smtp.qq.com
#SMTP 服务器的端口
spring.mail.port=587
#配置邮箱用户名
spring.mail.username=1234567890@qq.com
#配置密码,注意,不是真正的密码,而是刚刚申请到的授权码
spring.mail.password=xxxxxxxxxxxxxxxx
#默认的邮件编码
spring.mail.default-encoding=UTF-8
#配饰 SSL 加密工厂
spring.mail.properties.mail.smtp.socketFactoryClass=javax.net.ssl.SSLSocketFactory
#表示开启 DEBUG 模式
spring.mail.properties.mail.debug=true

  1. 发送简单的邮件,在单元测试中写一下代码点击运行即可
	@Autowired
    JavaMailSender mailSender;
	@Test
    public void test01() {
        //构建一封简单邮件
        SimpleMailMessage message = new SimpleMailMessage();
        //邮件主题
        message.setSubject("这是一封测试邮件");
        //邮件正文
        message.setText("这是邮件正文");
        //指定邮件发送者
        message.setFrom(from);
        //收件人
        message.setTo("123456789@qq.com");
        //抄送
        message.setCc("112233445@qq.com");
        //密抄,别人看不到这个收件人
        message.setBcc("222222222@qq.com");
        //邮件发送日期
        message.setSentDate(new Date());
        //发送邮件
        mailSender.send(message);
    }
3.2 复杂邮件的发送(这里使用的是thymeleaf模板)

推荐在 SpringBoot 中使用 Thymeleaf 来构建邮件模板。因为 Thymeleaf 的自动化配置提供了一个TemplateEngine,通过 TemplateEngine 可以方便的将 Thymeleaf 模板渲染为 HTML。

  1. 导入thymeleaf依赖
 		
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
  1. 创建邮件模板



    
    Title


欢迎 加入 Java开发大家庭,您的入职信息如下:
职位名称:
上级:
薪水
如果入职信息无误,请点击如下链接确认:

  1. 发送邮件
	@Autowired
    JavaMailSender mailSender;
    @Value("${spring.mail.username}")
    String from;
    @Autowired
    TemplateEngine templateEngine;

    @Test
    public void test02() throws MessagingException {
        //创建一个复杂邮件
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        //MimeMessageHelper 是一个配置邮件对象的辅助工具
        //如果邮件带附件,注意第二个参数要设置为 true
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        //邮件主题
        helper.setSubject("这是一封来自一个大帅比的邮件");

        Context context = new Context();
        context.setVariable("username", "XXX");
        context.setVariable("position",
                "Java开发工程师");
        context.setVariable("leader", "石XX");
        context.setVariable("salary", "20000");
        String mail = templateEngine.process("email", context);
        //邮件正文
        helper.setText(mail,true);
        //指定邮件发送者
        helper.setFrom(from);
        //收件人
        helper.setTo("11111112220@qq.com");
        抄送
        //helper.setCc("xxxxx@qq.com");
        密抄,别人看不到这个收件人
        //helper.setBcc("xxxxxx@qq.com");
        //邮件发送日期
        helper.setSentDate(new Date());
        //加附件
        //helper.addAttachment("图片",new File("E:\GZ-2201\third\springboot\SpringBootProject\mail\src\main\resources\static\java.jpg"));
        mailSender.send(mimeMessage);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877070.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号