SpringBoot 依赖之Java Mail Sender邮件发送

Java Mail Sender

  • 依赖名称: Java Mail Sender
  • 功能描述: Send email using Java Mail and Spring Framework's JavaMailSender.
  • 使用 Java Mail 和 Spring Framework 的 JavaMailSender 发送电子邮件。
xml 复制代码
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

写在前面,站在巨人的肩膀上才能站的更高,看的更远。重复造轮子的事我们不干。

0. 源码已开源,可以免费下载

码云gitee: https://gitee.com/CoderChange/springboot-all-dependencies

1. 创建 Spring Boot 项目

  1. 打开 IntelliJ IDEA 并选择 "New Project"
  2. 在左侧的菜单中选择 "Spring Initializr"
  3. 配置项目的基本信息:
    • Group: com.dependencies
    • Artifact: java-mail-sender
    • Name: java-mail-sender
    • Type: Maven
    • Language: Java
    • Packaging: Jar
    • Java Version: 17
  4. 点击 "Next"
  5. "Dependencies" 页面,添加以下依赖:
    • Spring Web - 用于创建 Web 应用程序。
    • Spring Boot Starter Mail - 用于发送电子邮件。
  6. 点击 "Next" ,然后点击 "Finish" 来创建项目。

上面的步骤前面几篇文章也有截图可以参考,这里不再赘述。下面是项目创建完成之后的项目架构目录

2. 配置项目的依赖

IDEA 会自动生成一个 pom.xml 文件并添加你选择的依赖。确保 pom.xml 包含以下依赖:

xml 复制代码
<properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
      	<!-- Spring Boot Starter Mail -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
       <!-- Spring Boot Starter Web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

3. 配置邮件发送属性

src/main/resources 目录下创建 application.properties 文件,并添加以下配置以设置邮件服务器属性(例如使用 QQmail SMTP 服务器):

properties 复制代码
#我这边用的是QQ邮箱作为邮件发送服务器
spring.mail.protocol=smtp
spring.mail.host=smtp.qq.com
spring.mail.port=587
spring.mail.username=123456789@qq.com
#QQ邮箱 设置邮件服务会生成临时密码
spring.mail.password=邮件服务器临时密码
spring.mail.test-connection=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=3000
spring.mail.properties.mail.smtp.writetimeout=5000
# 这个是debug模式,启动过程中会打印出邮箱验证的日志
spring.mail.properties.mail.debug=true

这幅图就是run启动过程中 邮件服务器的自检操作,包括auth login认证结果都会打印,一般在开发环境调试时打开spring.mail.properties.mail.debug=true,生产环境默认关闭 spring.mail.properties.mail.debug=fasle

4. 创建邮件服务类

创建一个服务类用于发送电子邮件。这个是邮件的核心服务,后期可以扩展邮件内容为文本、附件、定制模板等多种呈现形式的邮件公共服务。

java 复制代码
package com.dependencies.javamailsender.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

/**
 * @author zhizhou   2024/7/25 16:39
 */
@Service
public class EmailService {
    
    @Autowired
    private JavaMailSender javaMailSender;
    
    public void sendSimpleEmail(String to, String subject, String text) {
        SimpleMailMessage message = new SimpleMailMessage();
      	//这几个参数必填
        message.setTo(to);
        message.setSubject(subject);
        message.setText(text);
        message.setFrom("你的发件邮箱@xx.com");
    
        try {
            javaMailSender.send(message);
        } catch (MailException e) {
            e.printStackTrace();
            //这里捕获一下异常,调试时可以知道具体的错误原因。
        }
    }   
}

5. 创建控制器

创建一个控制器类来触发发送电子邮件的操作,我们先简单实现这个控制器行为,暂时将入参变量固定以值来快速调试。

java 复制代码
package com.dependencies.javamailsender.controller;

import com.dependencies.javamailsender.service.EmailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author zhizhou   2024/7/25 16:40
 */
@RestController
public class EmailController {
    
    @Autowired
    private EmailService emailService;
    
    @GetMapping("/sendEmail")
    public String sendEmail() {
        String to = "收件邮箱@oo.com";
        String subject = "测试邮件";
        String text = "你好,这是测试邮件";
        emailService.sendSimpleEmail(to, subject, text);
        return "邮件发送成功!";
    }
    
}

6. 创建主应用程序类

创建主应用程序类并注解 @SpringBootApplication:补充说一下, IDEA在创建项目的时候这个文件是已经生成好的,一般不需要额外创建。

java 复制代码
package com.dependencies.javamailsender;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JavaMailSenderApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(JavaMailSenderApplication.class, args);
    }
    
}

7. 运行项目

  1. 在 IntelliJ IDEA 中,找到主应用程序类 EmailDemoApplication
  2. 右键点击该类,并选择 "Run 'EmailDemoApplication'" 来启动项目。

8. 测试发送电子邮件

启动 Spring Boot 应用程序后,打开浏览器并访问以下 URL 来测试发送电子邮件:

复制代码
http://localhost:8080/sendEmail

总结

通过以上步骤,我们在 IntelliJ IDEA 中创建了一个 Spring Boot 项目,添加了 Java Mail Sender 依赖,并配置了发送电子邮件的服务。这个示例项目可以帮助你快速上手并实现邮件发送功能。确保在 application.properties 文件中正确配置了邮件服务器属性(例如 QQMail 的 SMTP 服务器),可以根据你的实际需求调整配置。

如果有学习过程中遇到问题,可以留言讨论,看到后,我会第一时间予以回复。

这里实现的基本的文本级别的邮件内容,后期会更新 结合模板引擎Thymeleaf 发送定制模板的邮件内容。

相关推荐
一只叫煤球的猫4 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9654 小时前
tcp/ip 中的多路复用
后端
bobz9654 小时前
tls ingress 简单记录
后端
皮皮林5516 小时前
IDEA 源码阅读利器,你居然还不会?
java·intellij idea
你的人类朋友6 小时前
什么是OpenSSL
后端·安全·程序员
bobz9656 小时前
mcp 直接操作浏览器
后端
前端小张同学8 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook8 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康9 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在9 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net