本文探讨了 Spring Boot 与 SMTP 的集成以及如何从您自己的 Spring Boot 应用程序发送电子邮件。
本文探讨如何从您自己的Spring Boot应用程序发送电子邮件。
是的,您可以拥有专用的 REST API,它接受电子邮件发送者和接收者的电子邮件地址、主题和正文——构成商务电子邮件的经典属性。然后,您的前端团队可以通过传递必要的参数来随意调用此 API,瞧!您的电子邮件已轻松发送。
Spring Boot 提供了内置依赖项,其中包含所有必需的方法。这可用于将电子邮件发送到有效的电子邮件地址。它完全免费,并且非常容易与经典Spring Boot应用程序集成。
在本文中,我们将了解如何从简单的 Spring Boot 应用程序发送电子邮件。
Spring 使用SimpleMailMessage并通过集成来实现它 spring-boot-starter-mail.
那么,让我们开始吧。
步骤1
前往start.spring.io并创建一个新的 Spring Boot 项目,仅包含以下依赖项
- Spring web
- Java Mail sender
单击“生成项目”。这将创建一个 zip 文件,将其解压并在 IntelliJ 中打开它。
此时,您已经有了一个基本的Spring Boot项目。只需点击播放按钮启动应用程序即可确保一切正常运行。
第 2 步:配置我们的电子邮件服务器
接下来,我们需要提供 Spring Mail 的配置。只需将电子邮件配置的以下属性添加到application.properties
文件中即可:
# email configs
spring.mail.host=smtp.gmail.com
spring.mail.username=<your email id>
spring.mail.password=<your password>
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
步骤3
完成所有必需的配置后,我们就可以公开我们的其余端点/邮件,它将接受传入请求以将电子邮件发送到特定电子邮件地址。
让我们为控制器层添加以下代码,以便能够访问我们的 API,这将触发电子邮件。
@RestController
public class EmailController {
@Autowired
private EmailService emailService;
@PostMapping("/mail")
public void sendEMail(@RequestBody EmailRequest emailRequest) {
System.out.println("Going to Send email: " + emailRequest.toString());
emailService.sendEmail(emailRequest);
}
}
正如我们所看到的,控制器期望名为的请求对象EmailRequest.
因此,为电子邮件请求创建一个请求正文,其中包含以下属性来标识电子邮件:
public class EmailRequest {
// Class data members
private String recipient;
private String msgBody;
private String subject;
private String attachment;
//generate getters
}
服务层
我们来说一下实现类。它将包含一个对象,该对象JavaMailSender
具有一个名为的方法send()
,该方法具有以下签名:
void send(SimpleMailMessage simpleMessage) throws MailException;
该类SimpleMailMessage
来自包 "org.springframework.mail"
。
它具有发件人、收件人、文本和主题等属性。我们根据传入的请求设置所有这些重要属性。如下所示,最终将使用'javaMailSender'
来触发 send 方法。
@Service
public class EmailServiceImpl implements EmailService {
@Autowired
private JavaMailSender javaMailSender;
@Override
public void sendEmail(EmailRequest emailRequest) {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom("abc@xyz");
mailMessage.setTo(emailRequest.getRecipient());
mailMessage.setText(emailRequest.getMsgBody());
mailMessage.setSubject(emailRequest.getSubject());
javaMailSender.send(mailMessage);
}
}
至此,我们就完成了!启动应用程序并前往 Postman。我们使用 spring 的默认端口(8080),因此调用 APIlocalhost:8080/mail
从 Postman 调用 API 如下:
结论
在本文中,我们学习了一种从 Spring Boot 应用程序发送电子邮件的简单方法。它使用 JMSJavaMailSender
通过简单的 REST API 发送电子邮件。