SpringBoot整合mail发送邮件

哈喽,大家好,我是花臂,今天给大家介绍如何使用springboot发送邮件。

邮箱配置

本次演示的利用qq邮箱发送邮件(其他邮箱步骤都是大同小异),所以需要在qq邮箱中开启SMTP服务。

进入qq邮箱,点击设置,点击账户,开启SMTP服务,并生成授权码。

普通文本邮件发送

创建springboot工程,导入如下依赖

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
       <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

配置文件

spring:
 mail:
  host: smtp.qq.com #发送邮件服务器
  username: 2670506538@qq.com #发送邮件的邮箱地址
  password: vdmzngqaciwedhhj #客户端授权码,不是邮箱密码,在qq邮箱设置里面自动生成
  default-encoding: UTF-8
  #以下可以配置或者不配置
 smtp:
  auth: true
  starttls:
   enable: true
   required: true

编写邮件发送代码

@Service
public class SendMail {

 private final Logger logger = LoggerFactory.getLogger(this.getClass());

 @Autowired
 private JavaMailSender mailSender;

 /***
  * 发送普通文本邮件
  * @throws Exception
  */
 public void sendText() throws Exception {
  //建立邮件消息
  SimpleMailMessage mainMessage = new SimpleMailMessage();
  try {
   //设置发件人及接收方显示的发件人的名称
   InternetAddress from = new InternetAddress("2670506538@qq.com", "花臂");
   //发送者
   mainMessage.setFrom(from.toString());
   //接收者
   mainMessage.setTo("zmq2911@163.com");
   //发送的内容
   mainMessage.setText("电饭锅");
   mailSender.send(mainMessage);
   logger.info("邮件已经发送。");

  } catch (Exception e) {
   logger.error("发送邮件时发生异常!", e);
  }

 }

测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class appTest {

 @Autowired
 SendMail sendMail;

 @Test
 public void method() throws Exception {

  sendMail.sendText();

 }

}

HTML邮件发送

@Service
public class SendMail {

 private final Logger logger = LoggerFactory.getLogger(this.getClass());

 @Autowired
 private JavaMailSender mailSender;

 /***
  * 发送html邮件
  * @throws Exception
  */
 public void sendHtml() throws Exception {
  //建立邮件消息
  MimeMessage message = mailSender.createMimeMessage();
  MimeMessageHelper messageHelper;
  try {
   messageHelper = new MimeMessageHelper(message, true);
   //设置发件人及接收方显示的发件人的名称
   InternetAddress from = new InternetAddress("2670506538@qq.com", "花臂");
   //邮件发送人
   messageHelper.setFrom(from.toString());
   //邮件接收人
   messageHelper.setTo("zmq2911@163.com");
   //邮件主题
   message.setSubject("花臂家");
   //邮件内容,html格式
   messageHelper.setText("<h1>Hello<h1><P style=\"font-size: 18px;\">我是花臂,欢迎来到我的博客网站,感谢关注,我会定期把博客的最新动态分享给你,谢谢</P><a href=\"https://www.zmq2911.com/\" style=\"font-size: 18px;\">进入博客</a>", true);
   //发送
   mailSender.send(message);
   //日志信息
   logger.info("邮件已经发送。");
  } catch (Exception e) {
   logger.error("发送邮件时发生异常!", e);
  }

 }

测试

发送含附件的邮件

 /***
  * 发送含附件的邮件
  * @param filePath
  */
 public void sendAttachmentsMail(String filePath) {
  MimeMessage message = mailSender.createMimeMessage();
  try {
   MimeMessageHelper helper = new MimeMessageHelper(message, true);
   //设置发件人及接收方显示的发件人的名称
   InternetAddress from = new InternetAddress("2670506538@qq.com", "花臂");
   //邮件发送者
   helper.setFrom(from.toString());
   //邮件接收人
   helper.setTo("zmq2911@163.com");
   //邮件主题
   helper.setSubject("带有附件的邮件");
   //发送邮件,设置是否发送html邮件,设置false
   helper.setText("附件邮件", false);
   FileSystemResource file = new FileSystemResource(new File(filePath));
   //获取附件名
   String fileName = file.getFilename();
   //这个方法表示获取fileName点前面的内容,比如abc.txt返回abc,懂?
   String filename = StringUtils.substringBeforeLast(fileName, ".");

   helper.addAttachment(filename, file);
   mailSender.send(message);
   //日志信息
   logger.info("邮件已经发送。");
  } catch (Exception e) {
   logger.error("发送邮件时发生异常!", e);
  }

 }

测试

@SpringBootTest
@RunWith(SpringRunner.class)
public class appTest {

 @Autowired
 SendMail sendMail;

 @Test
 public void method() throws Exception {
  String filepath = "C:\\Users\\花臂seven\\Desktop\\redis搭建cluster集群.txt";
  sendMail.sendAttachmentsMail(filepath);

 }

}

ok,本次教程就到这儿,有什么疑问欢迎下方评论区留言!

评论区


2 条评论

  1. 2020年06月25日

    为什么你的网页加载这么快?加个友链呗大佬


    1. 2020年06月25日
      @Chris

      可以呀,你在我这儿注册一个连接就有友链了



© [2020] · Powered by Typecho · Theme by Morecho
鄂ICP备20005123号