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 项目
- 打开 IntelliJ IDEA 并选择 "New Project"。
- 在左侧的菜单中选择 "Spring Initializr"。
- 配置项目的基本信息:
- Group: com.dependencies
- Artifact: java-mail-sender
- Name: java-mail-sender
- Type: Maven
- Language: Java
- Packaging: Jar
- Java Version: 17
- 点击 "Next"。
- 在 "Dependencies" 页面,添加以下依赖:
- Spring Web - 用于创建 Web 应用程序。
- Spring Boot Starter Mail - 用于发送电子邮件。
- 点击 "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. 运行项目
- 在 IntelliJ IDEA 中,找到主应用程序类
EmailDemoApplication
。 - 右键点击该类,并选择 "Run 'EmailDemoApplication'" 来启动项目。
8. 测试发送电子邮件
启动 Spring Boot 应用程序后,打开浏览器并访问以下 URL 来测试发送电子邮件:
http://localhost:8080/sendEmail
总结
通过以上步骤,我们在 IntelliJ IDEA 中创建了一个 Spring Boot 项目,添加了 Java Mail Sender 依赖,并配置了发送电子邮件的服务。这个示例项目可以帮助你快速上手并实现邮件发送功能。确保在 application.properties
文件中正确配置了邮件服务器属性(例如 QQMail 的 SMTP 服务器),可以根据你的实际需求调整配置。
如果有学习过程中遇到问题,可以留言讨论,看到后,我会第一时间予以回复。
这里实现的基本的文本级别的邮件内容,后期会更新 结合模板引擎Thymeleaf 发送定制模板的邮件内容。