SpringBoot邮件发送

添加依赖依赖

<!--邮件发送需要的依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--邮件发送模板需要的依赖-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--web请求接口用到-->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

修改配置文件

application.yml中配置发送邮件相关的参数,具体如下

spring:
  mail:
    host: smtp.qq.com
    # 填入自己申请的邮箱信息
    username:
    password:
    default-encoding: UTF-8

重要的参数就这些,其它的使用默认的即可,以下为解释:

  • host: 邮箱服务器地址,这个根据自己使用的什么邮箱有区别,比如:
    1. smtp.163.com: 163邮箱
    2. smtp.126.com: 126邮箱
    3. smtp.qq.com: qq邮箱
  • username: 邮箱登录的用户名
  • password: 第三方登陆授权码(需要自己在邮箱中申请)
  • default-encoding: 编码方式

POP3/SMTP 服务

上面提到了授权码的概念,首先要明确一个概念就是授权码跟我们直接登陆邮箱的密码不是一样的,授权码可以理解为第三方客户端登陆邮箱的密码,要想获取授权码需要我们去自己所用邮箱的官网设置开启 POP3/SMTP以及IMAP/SMTP服务,我这里就以自己使用的qq账号为例介绍打开该服务以及获取授权码的步骤,如图:
在这里插入图片描述
在这里插入图片描述
登陆qq邮箱,按照图示步骤进行操作,在选择了服务之后会弹窗展示授权码,这里的授权码就是上边配置文件中password需要填写的值(只写IMAP/SMTP的授权码就可以)。

发送不同格式的邮件

public class MailServiceImpl implements IMailService {

  /**
   * 发送邮件接口
   */
  @Autowired
  private JavaMailSender jms;

  /**
   * 发送模板邮件时解析模板
   */
  @Autowired
  private TemplateEngine templateEngine;

  /**
   * 读取配置文件中的邮件发送者账号
   */
  @Value("${spring.mail.username}")
  private String from;

  /**
   * 简单文本邮件
   *
   * @param toUser 邮件接收者
   */
  @Override
  public void simpleMil(String toUser) {
    //初始化简单的邮件对象
    SimpleMailMessage message = new SimpleMailMessage();
    //邮件发送者
    message.setFrom(from);
    //邮件接收者
    message.setTo(toUser);
    //邮件标题
    message.setSubject("文字格式邮件");
    //邮件内容
    message.setText("文字格式内容");
    //发送邮件
    jms.send(message);
  }

  /**
   * html邮件
   */
  @Override
  public void htmlMail(String toUser) throws MessagingException {
    MimeMessage message = jms.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom(from);
    helper.setTo(toUser);
    helper.setSubject("html格式标题");
    String content = "<p style='color:yellow;'>这是一封html格式的文件</p><h1>这是一封html格式的文件</h1>";
    //true表示以html格式发送邮件
    helper.setText(content, true);
    jms.send(message);
  }

  /**
   * 带附件邮件
   */
  @Override
  public void attachmentMail(String toUser) throws MessagingException {
    MimeMessage message = jms.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom(from);
    helper.setTo(toUser);
    helper.setSubject("带附件");
    helper.setText("这是一封带附件的邮件");
    //加载文件路径
    FileSystemResource fs = new FileSystemResource(new File(this.getClass().getResource("/").getPath()
            + "\\自己菜与大佬菜的区别.jpg"));
    //添加附件
    helper.addAttachment("自己菜与大佬菜的区别.jpg", fs);
    jms.send(message);
  }

  /**
   * 带图片邮件
   */
  @Override
  public void imgMail(String toUser) throws MessagingException {
    MimeMessage message = jms.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom(from);
    helper.setTo(toUser);
    helper.setSubject("带图片邮件");
    //设置资源的cid
    String content = "<html><body>小菜鸡图片<img src='cid:img'/></body></html>";
    helper.setText(content, true);
    FileSystemResource fs = new FileSystemResource(new File(this.getClass().getResource("/").getPath()
            + "\\自己菜与大佬菜的区别.jpg"));
    helper.addInline("img", fs);
    jms.send(message);
  }

  /**
   * 模板邮件
   */
  @Override
  public void templateMail(String toUser) throws MessagingException {
    MimeMessage message = jms.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom(from);
    helper.setTo(toUser);
    helper.setSubject("模板邮件");
    Context context = new Context();
    context.setVariable("username", "段誉");
    //thymeleaf模板默认会从src/resources/templates目录下寻找文件,填入我们定义的模板名,不需要写后缀
    String template = templateEngine.process("MailTemplate", context);
    helper.setText(template, true);
    jms.send(message);
  }
}

模板邮件的模板

接下来在src/main/resources/templates目录下新建MailTemplate.html文件,内容如下

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
</head>
<body>
  <h1>您好,<span th:text="${username}"></span>:这是来自测试的邮件模板!</h1>
</body>
</html>

测试结果不再展示,更改配置后可自行测试

demo地址

https://gitee.com/fengzxia/spring-boot-mail

来源

作者:诺丨言
链接:https://juejin.im/post/5ca8578bf265da30893a052d
来源:掘金

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值