前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot – 通过 SMTP 发送电子邮件

Spring Boot – 通过 SMTP 发送电子邮件

作者头像
用户1418987
发布2023-10-26 14:02:54
3400
发布2023-10-26 14:02:54
举报
文章被收录于专栏:codercoder

Spring Boot – 通过 SMTP 发送电子邮件

Spring Boot提供了使用JavaMail库通过 SMTP 发送电子邮件的功能。在这里,我们将说明开发可用于发送带或不带附件的电子邮件的 Restful Web 服务的分步指南。为了开始执行这些步骤,我们首先使用 Spring Initializer 创建一个 Spring Boot 项目。

执行:

步骤1:

pom.xml中添加spring-boot-starter-mail依赖

代码语言:javascript
复制
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

此依赖项是使用JavaMail 的入门,可以视为 Spring 框架的电子邮件发送支持

步骤 2:

使用Gmail SMTP服务器所需的配置设置Application.properties文件。

代码语言:javascript
复制
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 可以作为用户名提供。对于密码生成,需要为您的帐户启用两步验证,如下所示:

Spring Boot – 通过 SMTP 发送电子邮件_发送邮件
Spring Boot – 通过 SMTP 发送电子邮件_发送邮件

接下来,需要创建 AppPassword

Spring Boot – 通过 SMTP 发送电子邮件_spring_02
Spring Boot – 通过 SMTP 发送电子邮件_spring_02

步骤 3:创建EmailDetails类,其中包含 收件人、msgBody、主题和附件等字段。

代码语言:javascript
复制
// 用于说明 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;
}
步骤4:

创建接口EmailService并实现服务层的类EmailServiceImpl 。

EmailService接口定义两个方法:

  1. String sendSimpleMail(EmailDetails详细信息):此方法可用于向所需收件人发送简单的文本电子邮件。
  2. String sendMailWithAttachment(EmailDetails详细信息):此方法可用于将电子邮件连同附件一起发送给所需的收件人。

接口和服务实现类如下示例所示: 

文件:EmailService.java

代码语言:javascript
复制
// 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的辅助类,用于添加发送邮件所需的附件和其他详细信息。

文件:EmailServiceImpl.java

代码语言:javascript
复制
// 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!!!";
		}
	}
}
第 6 步:

运行 Spring Boot 应用程序并点击http://localhost:8080/sendMail发送一封简单的电子邮件

Spring Boot – 通过 SMTP 发送电子邮件_发送邮件_03
Spring Boot – 通过 SMTP 发送电子邮件_发送邮件_03

Gmail收到的邮件如下:

Spring Boot – 通过 SMTP 发送电子邮件_发送邮件_04
Spring Boot – 通过 SMTP 发送电子邮件_发送邮件_04
第 7 步:

运行 Spring Boot 应用程序并点击http://localhost:8080/sendMailWithAttachment以发送带有附件的电子邮件。

Spring Boot – 通过 SMTP 发送电子邮件_发送邮件_05
Spring Boot – 通过 SMTP 发送电子邮件_发送邮件_05

Gmail收到的邮件如下:

Spring Boot – 通过 SMTP 发送电子邮件_spring_06
Spring Boot – 通过 SMTP 发送电子邮件_spring_06
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring Boot – 通过 SMTP 发送电子邮件
    • 执行:
      • 步骤1:
      • 步骤 2:
      • 步骤4:
    • 文件:EmailService.java
      • 文件:EmailServiceImpl.java
        • 第 6 步:
        • 第 7 步:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档