SpringBoot+Email发送邮件的实现示例

 更新时间:2024年03月01日 11:28:41   作者:奇遇少年  
Spring Boot提供了简单而强大的邮件发送功能,本文主要介绍了SpringBoot+Email发送邮件的实现示例,具有一定的参考价值,感兴趣的可以了解一下

引言

邮件通知是现代应用中常见的一种通信方式,特别是在需要及时反馈、告警或重要事件通知的场景下。Spring Boot提供了简单而强大的邮件发送功能,使得实现邮件通知变得轻而易举。本文将研究如何在Spring Boot中使用JavaMailSender实现邮件发送,以构建一个可靠的通知体系。

使用场景举例:

  • 注册验证:在用户注册各种账户时,通过邮件发送验证码进行身份确认和账户激活。
  • 网站营销:向潜在客户或已有用户发送营销信息或者广告邮件。
  • 身份安全验证:在用户修改密码、解锁账户等关键操作时,通过邮件发送安全验证码来增强账户的安全性。

普通文本邮件、HTML内容板式邮件、包含静态资源邮件以及带附件邮件的发送:可以满足不同类型邮件的发送需求。

步骤一:引入邮件发送依赖

在Spring Boot项目的pom.xml文件中引入邮件发送所需的依赖:

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

步骤二:配置邮件发送参数

application.propertiesapplication.yml中配置邮件发送的相关参数,包括邮件服务器主机、端口、账户信息等:

spring:
  mail:
    host: smtp.163.com
    username: *****@163.com
    password: *****
    port: 25

步骤三:创建邮件发送服务

创建一个邮件发送的服务类,使用JavaMailSender进行邮件发送:

public interface SendMailService {
    public String sendSimpleMail(String address, String subject, String body);
    public String sendAttachmentMail(String address, String subject, String body, MultipartFile attach) throws MessagingException, IOException;
}
@Service
public class SendMailServiceImpl implements SendMailService {
    @Autowired
    private JavaMailSender javaMailSender;
    @Value("${spring.mail.username}")
    private String account;

    /**
     * @param address 收件地址
     * @param subject 标题
     * @param body    正文
     * @return
     */
    @Override
    public String sendSimpleMail(String address, String subject, String body) {
        SimpleMailMessage smm = new SimpleMailMessage();
        smm.setFrom(account);
        smm.setTo(address);
        smm.setSubject(subject);
        smm.setText(body);
        javaMailSender.send(smm);
        return "发送成功";
    }

    /**
     * @param address 收件地址
     * @param subject 标题
     * @param body    正文
     * @param attach  附件
     */
    @Override
    public String sendAttachmentMail(String address, String subject, String body, MultipartFile attach) throws MessagingException, IOException {
        MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);
        mimeMessageHelper.setFrom(account);
        mimeMessageHelper.setTo(new String[]{address});
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(body);
        // 获取附件的文件名和后缀名
        String fileName = attach.getOriginalFilename();
        String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);
        // 读取附件内容
        byte[] bytes = attach.getBytes();
        // 创建一个新的资源对象来存储附件内容
        ByteArrayResource attachmentResource = new ByteArrayResource(bytes);
        // 添加附件,使用完整的文件名(包括后缀名)
        mimeMessageHelper.addAttachment(fileName, attachmentResource);
        javaMailSender.send(mimeMailMessage);
        return "发送成功";
    }
}

步骤四:使用邮件发送服务

在需要发送邮件的地方,注入EmailService并调用相应的方法:

@RestController
public class EmailController {
    @Autowired
    private SendMailService sendMailService;
    @RequestMapping("/sendMail")
    public String sendMail(String address, String subject, String body) {
       return sendMailService.sendSimpleMail(address, subject, body);

    }
    @RequestMapping("/sendMailWithAttachment")
    public String sendMailWithAttachment(String address, String subject, String body, MultipartFile attach) throws IOException, MessagingException {
       return sendMailService.sendAttachmentMail(address, subject, body, attach);
    }
}

测试结果

结语

通过本文的介绍,你已经学到了如何在Spring Boot应用中使用JavaMailSender实现邮件发送功能。这个简单而强大的功能可以应用于各种场景,如用户注册、密码重置、异常通知等。通过配置邮件发送参数、创建邮件发送服务和使用邮件发送服务,你可以轻松构建一个可靠的邮件通知体系,为你的应用增加及时的通知和反馈机制。希望这篇博文能够帮助你成功实现Spring Boot中的邮件发送功能。

到此这篇关于SpringBoot+Email发送邮件的实现示例的文章就介绍到这了,更多相关SpringBoot Email发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java7到Java17之Switch语句进化史示例详解

    Java7到Java17之Switch语句进化史示例详解

    这篇文章主要为大家介绍了Java7到Java17之Switch语句进化史示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • SpringBoot SPI 机制和实现自定义 starter

    SpringBoot SPI 机制和实现自定义 starter

    这篇文章主要介绍了SpringBoot SPI机制和实现自定义 starter,全称是Service Provider Interface。简单翻译的话,就是服务提供者接口,是一种寻找服务实现的机制
    2022-08-08
  • Java实现简单树结构

    Java实现简单树结构

    这篇文章主要为大家详细介绍了Java实现简单树结构的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Spring MVC内置过滤器功能示例详解

    Spring MVC内置过滤器功能示例详解

    这篇文章主要为大家介绍了Spring MVC内置过滤器使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • SpringBoot定制化Starter实现方法

    SpringBoot定制化Starter实现方法

    小伙伴们曾经可能都经历过整天写着CURD的业务,都没写过一些组件相关的东西,这篇文章记录一下SpringBoot如何自定义一个Starter。原理和理论就不用多说了,可以在网上找到很多关于该方面的资料,这里主要分享如何自定义
    2023-01-01
  • 使用mybatis进行数据插入时返回自增id的方法及注意点

    使用mybatis进行数据插入时返回自增id的方法及注意点

    这篇文章主要给大家介绍了关于使用mybatis进行数据插入时返回自增id的方法及注意点,在插入一条数据之后需要返回它的自增主键id,因为插入的实体类数据id为空,后面的逻辑还需要这个id,需要的朋友可以参考下
    2023-09-09
  • java 中Comparable与Comparator详解与比较

    java 中Comparable与Comparator详解与比较

    这篇文章主要介绍了java 中Comparable与Comparator详解与比较的相关资料,需要的朋友可以参考下
    2017-04-04
  • java实现文件编码转换的方法

    java实现文件编码转换的方法

    这篇文章主要为大家详细介绍了java实现文件编码转换的方法,分享一个文件编码转换的工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Java_Spring之Spring 中的事务控制

    Java_Spring之Spring 中的事务控制

    这篇文章主要介绍了Java Spring中的事务控制,事务控制要明确内容,事务的控制都是基于AOP的,感兴趣的小伙伴可以参考阅读本文
    2023-04-04
  • Java 判断字符串中是否包含中文的实例详解

    Java 判断字符串中是否包含中文的实例详解

    这篇文章主要介绍了Java 判断字符串中是否包含中文的实例详解的相关资料,这里提供实例来说明该如何实现这样的功能,需要的朋友可以参考下
    2017-08-08

最新评论