欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

怎么发送邮件,电脑怎么发送邮件

墨初 知识笔记 83阅读

在现代的互联网应用中发送电子邮件是一项常见的功能需求。Spring Boot提供了简单且强大的邮件发送功能使得在应用中集成邮件发送变得非常容易。本文将介绍如何在Spring Boot中发送电子邮件并提供一个完整的示例。

1. 准备工作

在开始之前我们需要确保已经配置好了以下两项准备工作

一个有效的邮件服务器及其连接信息包括SMTP主机名、端口号、用户名和密码。你可以使用自己的邮件服务器或者使用第三方邮件服务提供商如Gmail、SendGrid等。一个已经搭建好的Spring Boot项目。你可以使用Spring Initializr Boot项目确保项目中包含所需的基本依赖。 2. 添加依赖

首先在你的Spring Boot项目的pom.xml文件中添加以下Maven依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-mail</artifactId></dependency>

这将在你的项目中引入Spring Boot的邮件发送功能所需的所有依赖。

3. 配置邮件服务器信息

接下来我们需要在Spring Boot的配置文件中配置邮件服务器的连接信息。在application.propertiesapplication.yml文件中添加以下属性

spring.mail.hostyour_smtp_hostspring.mail.portyour_smtp_portspring.mail.usernameyour_usernamespring.mail.passwordyour_passwordspring.mail.properties.mail.smtp.authtrue

确保将上述属性值替换为你实际的邮件服务器连接信息。

4. 创建邮件发送服务

现在我们可以创建一个邮件发送服务类该类将使用Spring Boot提供的JavaMailSender来发送邮件。在你的项目中创建一个名为EmailService的新类并在其中添加以下代码

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.stereotype.Service;Servicepublic class EmailService {    private JavaMailSender javaMailSender;    Autowired    public EmailService(JavaMailSender javaMailSender) {        this.javaMailSender  javaMailSender;    }    public void sendEmail(String to, String subject, String text) {        SimpleMailMessage message  new SimpleMailMessage();        message.setTo(to);        message.setSubject(subject);        message.setText(text);        javaMailSender.send(message);    }}

在上述代码中我们使用JavaMailSender来创建一个邮件消息对象SimpleMailMessage并设置收件人、主题和内容。最后我们通过调用javaMailSender.send(message)来发送邮件。

5. 使用邮件发送服务

现在我们可以在需要发送邮件的地方使用EmailService。例如在一个Spring Boot的控制器中你可以注入EmailService并调用其sendEmail方法来发送邮件。以下是一个示例

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;RestControllerpublic class EmailController {    private EmailService emailService;    Autowired    public EmailController(EmailService emailService) {        this.emailService  emailService;    }    GetMapping(/sendEmail)    public String sendEmail() {        String to  recipientexample.com;        String subject  Test Email;        String text  This is a test email.;        emailService.sendEmail(to, subject, text);        return Email sent successfully.;    }}

在上述示例中我们创建了一个EmailController控制器并注入了EmailService。在sendEmail方法中我们指定了收件人地址、邮件主题和内容并调用emailService.sendEmail方法发送邮件。

6. 运行测试

现在你可以启动你的Spring Boot应用程序并向/sendEmail端点发出GET请求来测试邮件发送功能。如果一切正常你应该会在日志输出中看到邮件发送成功的消息。

注意在测试邮件发送功能时请确保邮件服务器的连接信息和收件人地址是正确的以避免错误发送邮件。

7. 常见错误 7.1 553 Mail from must equal authorized user
553 Mail from must equal authorized user  com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user      at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1333)      at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:906)      at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:535)      at com.you.mail.model.SendMessage.sendMessage(SendMessage.java:71)      at com.you.mail.model.SendMessage.main(SendMessage.java:89)      Exception in thread main com.sun.mail.smtp.SMTPSendFailedException: 553 Mail from must equal authorized user      at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1333)      at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:906)      at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:535)      at com.you.mail.model.SendMessage.sendMessage(SendMessage.java:71)      at com.you.mail.model.SendMessage.main(SendMessage.java:89)  

网上看到的结果是增加属性但我这边测试没通过

spring:  boot:    admin:      notify:        mail:          from: ${spring.mail.username}

后面增加了个传参解决的要和username的值一样才行

    public void sendEmail(String to, String subject, String text) {        SimpleMailMessage message  new SimpleMailMessage();        message.setTo(to);        message.setSubject(subject);        message.setText(text);        message.setForm(your_username);        javaMailSender.send(message);    }
7.2 SmtpClientAuthentication is disabled for the Tenant.
SmtpClientAuthentication is disabled for the Tenant. Visit  for more information.

我这边用的是office365的邮箱这边需要管理员开通相关的第三方客户端发送smtp的权限.

总结

Spring Boot使得在应用中集成邮件发送变得非常简单开发人员只需几行代码就能实现这一功能。希望本文对你理解和使用Spring Boot发送邮件有所帮助

标签:
声明:无特别说明,转载请标明本文来源!