Spring Boot提供了使用JavaMail库通过 SMTP
发送电子邮件的功能。在这里,我们将说明开发可用于发送带或不带附件的电子邮件的 Restful Web 服务的分步指南。为了开始执行这些步骤,我们首先使用 Spring Initializer 创建一个 Spring Boot 项目。
在pom.xml
中添加spring-boot-starter-mail依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
此依赖项是使用JavaMail 的入门,可以视为 Spring 框架的电子邮件发送支持
使用Gmail SMTP服务器所需的配置设置Application.properties文件。
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=<SMTP 服务器的登录用户>
spring.mail.password=<SMTP服务器的登录密码>
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
用于登录 Gmail 帐户的 Gmail ID 可以作为用户名提供。对于密码生成,需要为您的帐户启用两步验证,如下所示:
接下来,需要创建 AppPassword
步骤 3:创建EmailDetails类,其中包含 收件人、msgBody、主题和附件等字段。
// 用于说明 EmailDetails 类的 Java 程序
package com.SpringBootEmail.Entity;
// Importing required classes
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
// Annotations
@Data
@AllArgsConstructor
@NoArgsConstructor
// Class
public class EmailDetails {
// Class data members
private String recipient;
private String msgBody;
private String subject;
private String attachment;
}
创建接口EmailService并实现服务层的类EmailServiceImpl 。
EmailService接口定义了两个方法:
接口和服务实现类如下示例所示:
// Java程序来说明创建服务接口
package com.SpringBootEmail.service;
// 导入需要的类文件
import com.SpringBootEmail.Entity.EmailDetails;
// 定义接口
public interface EmailService {
// 方法用来发送邮件
String sendSimpleMail(EmailDetails details);
// 用来发送附件的方法
String sendMailWithAttachment(EmailDetails details);
}
这里使用 JavaMail API的JavaMailSender接口
要发送带有附件的更复杂的电子邮件,可以使用MimeMessage 。MimeMessageHelper用作MimeMessage的辅助类,用于添加发送邮件所需的附件和其他详细信息。
// Java程序来说明创建服务实现类
package com.SpringBootEmail.service;
// 导入需要的类文件
import com.SpringBootEmail.Entity.EmailDetails;
import java.io.File;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
// 注解
@Service
// Class
// 实现 EmailService 接口
public class EmailServiceImpl implements EmailService {
@Autowired private JavaMailSender javaMailSender;
@Value("${spring.mail.username}") private String sender;
// 发送邮件
public String sendSimpleMail(EmailDetails details)
{
// try 用来捕获异常
try {
// 创建一个简单的信息
SimpleMailMessage mailMessage
= new SimpleMailMessage();
// 设置必要的信息
mailMessage.setFrom(sender);
mailMessage.setTo(details.getRecipient());
mailMessage.setText(details.getMsgBody());
mailMessage.setSubject(details.getSubject());
// 发送邮件
javaMailSender.send(mailMessage);
return "Mail Sent Successfully...";
}
// 捕获异常
catch (Exception e) {
return "Error while Sending Mail";
}
}
// 发送带附件的邮件
public String
sendMailWithAttachment(EmailDetails details)
{
// 创建 message
MimeMessage mimeMessage
= javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper;
try {
// 设置发送附件的相关参数
mimeMessageHelper
= new MimeMessageHelper(mimeMessage, true);
mimeMessageHelper.setFrom(sender);
mimeMessageHelper.setTo(details.getRecipient());
mimeMessageHelper.setText(details.getMsgBody());
mimeMessageHelper.setSubject(
details.getSubject());
// 添加附件
FileSystemResource file
= new FileSystemResource(
new File(details.getAttachment()));
mimeMessageHelper.addAttachment(
file.getFilename(), file);
// 发送邮件
javaMailSender.send(mimeMessage);
return "Mail sent Successfully";
}
// 捕获异常
catch (MessagingException e) {
// 显示错误信息
return "Error while sending mail!!!";
}
}
}
运行 Spring Boot 应用程序并点击http://localhost:8080/sendMail
发送一封简单的电子邮件
Gmail收到的邮件如下:
运行 Spring Boot 应用程序并点击http://localhost:8080/sendMailWithAttachment
以发送带有附件的电子邮件。
Gmail收到的邮件如下:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有