首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot邮件发送

SpringBoot邮件发送

作者头像
玖柒的小窝
修改2021-11-08 09:00:50
修改2021-11-08 09:00:50
92900
代码可运行
举报
文章被收录于专栏:各类技术文章~各类技术文章~
运行总次数:0
代码可运行

1.邮件传输协议

电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,那就必须要遵守一定的规则,这个规则就是邮件传输协议。下面我们分别简单介绍几种协议:

  1. SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。
  2. POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则。
  3. IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则。

2.开启SMTP服务并获取授权码

这里我们以QQ邮箱为例,要想在SpringBoot发送QQ邮件必须先打开QQ邮箱的SMTP功能,默认是关闭的,具体操作如下。进入邮箱→设置→账户,然后找到下面这个

这里有个验证

验证完成之后

3.导入依赖与配置说明

这里我用的是gradle,引入spring-boot-starter-mail模块

代码语言:javascript
代码运行次数:0
运行
复制
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.4.10'
复制代码

application.yml配置

代码语言:javascript
代码运行次数:0
运行
复制
spring:
  mail:
    # 邮件服务器地址
    host: smtp.qq.com
    # SMTP 服务器的端口
    port: 587
    username: 1786087581@qq.com
    # 这里的密码是邮件授权码不是邮箱登陆的密码
    # 这里的邮件授权码我随便写的
    password: aksdfgsdfgxieiig
    # 额外的配置,这里我写了两个,只用其中一个就行了,开启ssl加密,保证安全连接
    properties:
      mail:
        smtp:
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
            ##         ssl:
            ##           enable :true
      #设置邮件的编码为utf-8
      default-encoding: utf-8
复制代码

补充: 126邮箱SMTP服务器地址:smtp.126.com,端口号:465或者994 2163邮箱SMTP服务器地址:smtp.163.com,端口号:465或者994 yeah邮箱SMTP服务器地址:smtp.yeah.net,端口号:465或者994 qq邮箱SMTP服务器地址:smtp.qq.com,端口号465或587*

4.邮件发送

4.1 简单邮件发送

代码语言:javascript
代码运行次数:0
运行
复制
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.io.File;
import java.util.Date;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Api(value = "邮件接口",tags = "邮件接口",description = "邮件接口")
@RequestMapping("/mail")
public class SendMailController {

@Autowired 
JavaMailSender javaMailSender;

@GetMapping("/sendMail")
public void sendMail(){
    //构建一个邮件对象
    SimpleMailMessage message = new SimpleMailMessage();
    //设置邮件主题
    message.setSubject("这是一封测试邮件");
    //设置邮件发送者
    message.setFrom("1786087581@qq.com");
    //设置邮件接收者,可以有多个接收者
    message.setTo("1******40@qq.com","1*******7@163.com");
    //设置邮件抄送人,可以有多个抄送人
    message.setCc("6666***8@qq.com");
    //设置隐秘抄送人,可以有多个
    message.setBcc("l*****3@163.com");
    //设置邮件发送日期
    message.setSentDate(new Date());
    //设置邮件的正文
    message.setText("测试邮件正文ok");
    //发送邮件
    javaMailSender.send(message);
}
复制代码

测试结果 发送成功

4.2发送带图片资源的邮件

代码语言:javascript
代码运行次数:0
运行
复制
@GetMapping("/sendMailWithImg")
@ApiOperation(value = "简单带图片邮件发送",notes = "简单带图片邮件发送",produces = "application/json")
public void sendMailWithImg() throws MessagingException {
    //创建一个复杂的邮件
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    //设置邮件主题
    helper.setSubject("这是一封带图片测试邮件");
    //设置邮件发送者
    helper.setFrom("1786087581@qq.com");
    //设置邮件接收者
    helper.setTo("1******40@qq.com");
    //设置邮件抄送人
    helper.setCc("6666***8@qq.com");
    //设置隐秘抄送人
    helper.setBcc("l*****3@163.com");
    //设置邮件发送日期
    helper.setSentDate(new Date());
    //设置邮件的正文
    helper.setText("<p>这是一封带图片测试邮件,这封邮件包含两种图片,分别如下</p><p>第一张图片:</p><img src='cid:p01'/><p>第二张图片:</p><img src='cid:p02'/>",true);
    helper.addInline("p01",new FileSystemResource(new File("C:\Users\hasee\Desktop\9cae14e699762b40a747d4198.jpg")));
    helper.addInline("p02",new FileSystemResource(new File("C:\Users\hasee\Desktop\微信图片_202101.jpg")));
    javaMailSender.send(mimeMessage);
}
复制代码

测试结果 发送成功

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.邮件传输协议
  • 2.开启SMTP服务并获取授权码
  • 3.导入依赖与配置说明
  • 4.邮件发送
    • 4.1 简单邮件发送
  • 4.2发送带图片资源的邮件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档