使用 Spring Boot 发送电子邮件(SMTP 集成)

        本文探讨了 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 发送电子邮件。 

猜你喜欢

转载自blog.csdn.net/qq_28245905/article/details/132202745