Spring Boot如何实现邮件发送功能

 时间:2024-11-03 09:43:13

1、首先我们需要在Spring Boot的工程中的pom.xml文件中引入spring-boot-starter-mail的依赖,spring-boot-start-test是用于单元测试的依赖,以下是我们需要得依赖,如下图所示。

Spring Boot如何实现邮件发送功能

2、再添加完依赖后,我们需要在application.properties中配置相应的属性内容。我们以个人QQ邮箱为例(非企业邮箱),企业邮箱我们会简单讲一下如何配置。在application.properties中加入如下配置,用户名和密码需要使用自己的。我们使用的如果是普通QQ邮箱则spring.mail.host=smtp.qq.com;spring.mail.username=用户名,这个用户名就是发送方的邮箱;spring.mail.password=密码,对于普通的QQ邮箱,这个密码不是邮箱真正的密码,而是在邮箱里默认生成的授权码,后面会讲到如何设置授权码;如果我们使用的是TLS协议(Transport Layer Security,传输层安全协议),则spring.mail.port=25,这个25是默认端口,可以不写;剩下的三个配置如下:spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=true

Spring Boot如何实现邮件发送功能

3、步骤2使用的是TLS协议,我们在网上搜邮件发送文章时,也有不少使用SSL协议(Secure Socket Layer,安全套接字层)的,其中最大的不同是spring.mail.port=465和spring.mail.properties.mail.smtp.ssl.enable=true, 如果混用了步骤2和3的配置,则是导致了大多数人根据网上的配置却没有成功的原因,例如有使用465端口却使用TLS协议配置的占多数。

Spring Boot如何实现邮件发送功能

4、接下来讲一下在配置application.properties文件时可能会遇到的坑,我们在配置了如spring.mail.host=smtp.qq.com ,后面多加了空格也会报错,通常的报错信息为:java.net.UnknownHostException: smtp.qq.com ,com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.qq.com, 25; timeout -1; 因此配置文件中一定要注意前后不要有空格,这也提醒我们在读配置文件时获取字符串尽量trim()一下去空格。

Spring Boot如何实现邮件发送功能

5、邮件想要成功发送需要去QQ邮箱设置开启SMTP邮件服务,然后获取到QQ邮箱的授权码。我们进入QQ邮箱的设置页面,点击账号,然后在POP3/SMTP后面点击开启按钮,会提示发送短信,短信发送成功后点击页面会生成授权码,该授权码便是上文配置处password需要填的。企业邮箱则为客户端专用密码,需绑定微信后设置,此处不再详述。

Spring Boot如何实现邮件发送功能
Spring Boot如何实现邮件发送功能
Spring Boot如何实现邮件发送功能

6、接下来我们编写单元测试代码来测试邮件发送是否成功,首先我们需要创建MailTestApplication类,该类添加注解@SpringBootApplication,该类不需要任何方法实现,我们仅用于启动SpringBoot。@SpringBootApplicationpublic class MailTestApplication {}接下来编写测试代码,如下所示。@RunWith(SpringRunner.class)@SpringBootTest(classes = MailTestApplication.class)public class MailSendTest { @Autowired private JavaMailSender mailSender; @Test public void sendSimpleMail() throws Exception { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("[email protected]"); // 必须要和上文配置的spring.mail.username内容相同 message.setTo("[email protected]"); message.setSubject("主题:测试邮件"); message.setText("测试邮件内容"); mailSender.send(message); }}

Spring Boot如何实现邮件发送功能
Spring Boot如何实现邮件发送功能

7、接下来我们看一下工程代码的整体结构,如果发送简单邮件的话,上面的几行测试代码就够了,如果要发送带HTML或者带图片和附件的代码则需要另外编写创建一个multipart message,此处不再赘述。

Spring Boot如何实现邮件发送功能

8、最后我们通过QQ邮箱的设置可以查看到更多的邮件服务器信息,点击下图红框中的链接可以查看更多详细信息。

Spring Boot如何实现邮件发送功能
  • 怎样去掉zblog底部的版权信息
  • 东欧旅行攻略
  • 罗网系统人人商城,短信接口怎么对接 [
  • XNN影音电器蓝牙耳机选购技巧
  • 织梦DedeCms如何修改文章标题的颜色
  • 热门搜索
    数学手抄报模板 艺术节手抄报 国学经典手抄报 疫情防控手抄报 感恩老师的手抄报 中秋手抄报 体育手抄报 感恩手抄报简单又漂亮 溺水手抄报 行为规范手抄报