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.properties或application.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);
    }
}

测试结果

image.png

结语

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

相关文章
|
2月前
|
安全 JavaScript Java
SpringBoot实现定时发送邮件
SpringBoot实现定时发送邮件
28 0
|
4天前
|
Java Spring
Spring boot项目如何发送邮件
Spring boot项目如何发送邮件
14 2
|
1月前
|
Java
Springboot如何发送邮件
Springboot如何发送邮件
|
3月前
|
消息中间件 JSON Java
如何利用springboot + rabbitmq发送邮件?
RabbitMQ相关知识请参考: RabbitMQ消息确认、消息持久化等核心知识总结 - 简书
29 2
|
3月前
|
Java
【Java专题_03】使用springboot发送邮件
【Java专题_03】使用springboot发送邮件
|
5月前
|
Java
SpringBoot项目发送邮件
SpringBoot项目发送邮件
51 1
|
6月前
|
Java 测试技术 Maven
Spring Boot发送邮件
Spring Boot发送邮件
|
9月前
|
JavaScript Java Spring
一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件
一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件
111 0
|
9月前
|
Java 容器
JavaMailSender发送邮件(整合SpringBoot、解决空指针异常问题)
一、邮箱开启SMTP服务 以qq邮箱为例 进入邮箱设置页面后选择账户
|
11月前
|
人工智能 Java
Springboot实现邮箱验证,发送邮件
Springboot实现邮箱验证,发送邮件