Springboot实现发送邮件

 更新时间:2021年10月21日 11:26:46   作者:玖月梦沉  
这篇文章主要为大家详细介绍了Springboot实现发送邮件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Springboot实现发送邮件功能的具体代码,供大家参考,具体内容如下

第一章 背景介绍

1.1 使用场景

1、注册验证;
2、网站营销;
3、安全的最后一道防线;
4、提醒、监控警告;
5、触发机制。

1.2 邮件发送原理

1.邮件传输协议:SMTP协议和POP3协议
2.内容不断发展:IMAP和Mme协议

1.3 邮件发送流程

第二章 使用SpringBoot完成邮件发送

2.1 开发流程

2.2 开发简单文本邮件

2.2.1 引入相关jar包

在pom.xml中添加依赖

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

2.2.2 配置邮箱参数

在配置文件里面配置:这里的密码是授权码,不是网页上的密码

spring.mail.host=smtp.163.com
spring.mail.username=XXX@163.com
spring.mail.password=XXX
spring.mail.default-encoding=utf-8

2.2.3 封装SimpleMailMessage

SimpleMailMessage message = new SimpleMailMessage();

2.2.4 JavaMailSender进行发送

@Autowired
private JavaMailSender mailSender;
//使用JavaMailSender发送邮件
mailSender.send(message);

具体的实现:

/**
 * @Description: 发送邮件
 * @Author: yzy
 * @Date:  2021/10/19 14:01
 **/
@Service
public class MailService {

    @Value("${spring.mail.username}")
    private String sendPeople;

    @Autowired
    private JavaMailSender mailSender;

    /**
     * @Description:  发送文本文件
     * @author:       yzy
     * @date:         2021/10/19 14:01
     * @Param:
     * @return:
     */
     public void sendSimpleMail(String to,String subject,String content) {
         SimpleMailMessage message = new SimpleMailMessage();
         //接收方
         message.setTo(to);
         //发送邮件的主题
         message.setSubject(subject);
         //发送邮件内容
         message.setText(content);
         //发送人
         message.setFrom(sendPeople);
         //使用JavaMailSender发送邮件
         mailSender.send(message);

     }

}

测试:

package com.yzy.restaurant.mapper;

import com.yzy.restaurant.MailService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

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

    @Autowired
    private MailService mailService;


    @Test
    public void sendSimpleMailTest() {
        mailService.sendSimpleMail("yzy20162362@163.com","这是一个简单的demo","哈哈哈,发送成功了!");
    }
}

启动:

效果:

2.3 开发HTML邮件

上代码,在MailService 和MailTest 加

/**
      * @Description:  发送html邮寄
      * @author:       yzy
      * @date:         2021/10/19 14:58
      * @Param:
      * @return:
      */
     public void sendMailHtml(String to,String subject,String content) throws MessagingException {
         MimeMessage message = mailSender.createMimeMessage();
         MimeMessageHelper helper = new MimeMessageHelper(message,true);
         helper.setTo(to);
         helper.setSubject(subject);
         helper.setText(content,true);
         helper.setFrom(sendPeople);
         mailSender.send(message);
     }
/**
      * @Description:  发送html邮寄
      * @author:       yzy
      * @date:         2021/10/19 14:58
      * @Param:
      * @return:
      */
     public void sendMailHtml(String to,String subject,String content) throws MessagingException {
         MimeMessage message = mailSender.createMimeMessage();
         MimeMessageHelper helper = new MimeMessageHelper(message,true);
         helper.setTo(to);
         helper.setSubject(subject);
         helper.setText(content,true);
         helper.setFrom(sendPeople);
         mailSender.send(message);
     }

2.3 开发附件邮件

上代码,在MailService 和MailTest 加

  /**
      * @Description:  发送附件邮件
      * @author:       yzy
      * @date:         2021/10/19 15:12
      * @Param:
      * @return:
      */
     public void sendAttachmentsMail(String to,String subject,String content,String filePath) throws MessagingException {
         MimeMessage message = mailSender.createMimeMessage();
         MimeMessageHelper helper = new MimeMessageHelper(message,true);
         helper.setTo(to);
         helper.setSubject(subject);
         helper.setText(content,true);
         helper.setFrom(sendPeople);

         //读取
         FileSystemResource file = new FileSystemResource(new File(filePath));
         //获取文件名
         String filename = file.getFilename();
         //设置附件
         helper.addAttachment(filename,file);
         //发送
         mailSender.send(message);

     }
 @Test
    public void sendAttachmentsMailTest() throws MessagingException {
        String filePath = "D:/玖佳智能 2020年3月第3周周工作汇总(3月16-3月20日)(1).xlsx";
        mailService.sendAttachmentsMail("yzy20162362@163.com","这是一封附件邮件","哈哈哈,附件邮件发送成功了",filePath);
    }

2.4 图片邮件

上代码,在MailService 和MailTest 加

/**
      * @Description:  带图片邮件
      * @author:       yzy
      * @date:         2021/10/19 15:35
      * @Param:
      * @return:
      */
    public void sendPhotoMail(String to,String subject,String content,String rscPath, String rscId) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message,true);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(content,true);
        helper.setFrom(sendPeople);

        //读取
        FileSystemResource rec = new FileSystemResource(new File(rscPath));
        helper.addInline(rscId,rec);
        //发送
        mailSender.send(message);


}
@Test
    public void sendPhotoMailTest () throws MessagingException {
        String imgPath = "C:\\Users\\yzy\\Desktop\\微信图片_20210917201828.jpg";
        String rsc = "0001";
        mailService.sendPhotoMail("yzy20162362@163.com","这是一封图片邮件","哈哈哈,图片邮件发送成功了",imgPath,rsc);
    }

2.5 邮件模板

模板邮件特别适用于:

1.用户注册的邮件;2.忘记密码的邮件

我用的是thymeleaf,前提是themleaf已经配置好,上代码
新建emailTemplate的页面:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    你好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!<br>
    <a rel="#" th:href="@{https://mail.163.com}" rel="external nofollow" >激活账户</a>>
</body>
</html>

测试代码:

@Test
    public void sendTemplateMailTest () throws MessagingException {
        Context content = new Context();
        content.setVariable("id","111");
        String emailContent = templateEngine.process("emailTemplate", content);
        mailService.sendMailHtml("yzy20162362@163.com","这是一封模板邮件",emailContent);
    }

效果:

常见错误:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • MyBatis批量插入数据过程解析

    MyBatis批量插入数据过程解析

    这篇文章主要介绍了MyBatis批量插入数据过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Apache commons fileupload文件上传实例讲解

    Apache commons fileupload文件上传实例讲解

    这篇文章主要为大家详细介绍了Apache commons fileupload文件上传实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 举例讲解Java设计模式中的对象池模式编程

    举例讲解Java设计模式中的对象池模式编程

    这篇文章主要介绍了Java设计模式中的对象池模式编程示例分享,对象池模式经常在多线程开发时被用到,需要的朋友可以参考下
    2016-02-02
  • java使用ffmpeg实现上传视频的转码提取视频的截图等功能(代码操作)

    java使用ffmpeg实现上传视频的转码提取视频的截图等功能(代码操作)

    这篇文章主要介绍了java使用ffmpeg实现上传视频的转码,提取视频的截图等功能,本文图文并茂给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Spring BeanPostProcessor后处理器源码解析

    Spring BeanPostProcessor后处理器源码解析

    这篇文章主要介绍了Spring BeanPostProcessor后处理器源码解析,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-09-09
  • 详细总结Java for循环的那些坑

    详细总结Java for循环的那些坑

    在平常写代码的过程中循环是不可避免的,虽然for的语法并不复杂,但是在开发中还是会遇到一些坑,虽然大部分的坑都是自己的骚操作导致的.今天来总结一下for循环在开发中可能遇到的坑,不要在同样的问题上再次犯错.需要的朋友可以参考下
    2021-05-05
  • SpringBoot读取配置文件的五种方法总结

    SpringBoot读取配置文件的五种方法总结

    这篇文章主要为大家详细介绍了SpringBoot读取配置文件的五种方法,文中的示例代码讲解详细,对我们学习SpringBoot有一定帮助,需要的可以参考一下
    2022-08-08
  • 一次Spring项目打包问题排查的实战记录

    一次Spring项目打包问题排查的实战记录

    这篇文章主要给大家介绍了一次Spring项目打包问题排查的实战记录,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • Java String字符串补0或空格的实现代码

    Java String字符串补0或空格的实现代码

    这篇文章主要介绍了Java String字符串补0或空格的实现代码,代码简单易懂,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • 详谈@Autowired和static的关系

    详谈@Autowired和static的关系

    这篇文章主要介绍了@Autowired和static的关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论