Spring Boot 使用465端口发送邮件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LDY1016/article/details/78365072

       最近做的一个项目中有个邮件发送功能,发送邮件默认是25端口,但是公司用的服务器是阿里云的,会屏蔽25端口,所以部署到服务器后连接不上邮件服务器,需要使用SSL协议(使用465端口)。

       需要注意的是Spring Boot 的版本问题,低版本只支持使用默认的25端口进行发送,或者使用SSL协议时的配置有所区别,我的Spring Boot 的版本信息最开始是1.3.0.RELEASE,在开发完成后测试的时候发现使用465端口死活连不上邮件服务器,只能通过25端口发送,对比了以前我做的项目,发现只有boot的版本不一样,于是我修改了一下版本信息,修改后如下所示: 

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>1.4.7.RELEASE</version>
  5. </parent>

代码实现细节如下

一、添加maven依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-mail</artifactId>
  4. </dependency>

二、添加配置信息

  1. #邮件配置
  2. spring.mail.host=邮件服务器地址
  3. spring.mail.username=用户名
  4. spring.mail.password=密码
  5. spring.mail. default-encoding=UTF-8
  6. #登录服务器是否需要认证
  7. spring.mail.properties.mail.smtp.auth= true
  8. #SSL证书Socket工厂
  9. spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
  10. #使用SMTPS协议465端口
  11. spring.mail.properties.mail.smtp.socketFactory.port= 465
  12. #显示在收件人邮箱里面的发件人名称
  13. spring.mail. self.username=用户名

三、Java代码

  1. import java.io.File;
  2. import java.util.List;
  3. import javax.mail.MessagingException;
  4. import javax.mail.internet.InternetAddress;
  5. import javax.mail.internet.MimeMessage;
  6. import javax.mail.internet.MimeMessage.RecipientType;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.mail.javamail.JavaMailSender;
  11. import org.springframework.mail.javamail.MimeMessageHelper;
  12. import org.springframework.stereotype.Service;
  13. /**
  14. * @类名: MailSender<br>
  15. * @描述: 邮件发送<br>
  16. */
  17. @Service
  18. public class MailSendService {
  19. @Autowired
  20. JavaMailSender mailSender;
  21. //发件人名称设置
  22. @Value("${spring.mail.self.username}")
  23. private String sendUser;
  24. public void sendEmail(String toMail, String title, String content) throws MessagingException {
  25. final MimeMessage mimeMessage = mailSender.createMimeMessage();
  26. final MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
  27. message.setFrom(sendUser);
  28. message.setTo(toMail);
  29. message.setSubject(title);
  30. message.setText(content);
  31. mailSender.send(mimeMessage);
  32. }
  33. /**
  34. * @方法名: sendSimpleMail<br>
  35. * @描述: 发送普通文本格式的邮件<br>
  36. * @param toMail 收件人,多个用英文格式逗号分隔
  37. * @param replyTo 抄送人,多个用英文格式逗号分隔
  38. * @param title 邮件主题
  39. * @param content 邮件内容
  40. * @param flies 附件
  41. * @throws Exception
  42. */
  43. public void sendSimpleMail(String toMail, String replyTo, String title, String content, List<File> files) throws Exception {
  44. final MimeMessage mimeMessage = mailSender.createMimeMessage();
  45. final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
  46. helper.setFrom(sendUser);
  47. helper.setSubject(title);
  48. helper.setText(content);
  49. //设置多个收件人
  50. String[] toAddress = toMail.split( ",");
  51. helper.setTo(toAddress);
  52. //设置多个抄送
  53. if(StringUtils.isNotBlank(replyTo)) {
  54. //helper.setReplyTo(replyTo);
  55. InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
  56. mimeMessage.setReplyTo(internetAddressCC);
  57. }
  58. //添加附件
  59. if(null != files) {
  60. for (File file : files) {
  61. helper.addAttachment(file.getName(), file);
  62. }
  63. }
  64. mailSender.send(mimeMessage);
  65. }
  66. /**
  67. * @方法名: sendHtmlMail<br>
  68. * @描述: 发送HTML格式的邮件<br>
  69. * @param toMail 收件人,多个用英文格式逗号分隔
  70. * @param replyTo 抄送人,多个用英文格式逗号分隔
  71. * @param title 邮件主题
  72. * @param htmlContent 邮件内容
  73. * @param files 附件
  74. * @throws Exception
  75. */
  76. public void sendHtmlMail(String toMail, String replyTo, String title, String htmlContent, List<File> files) throws Exception {
  77. final MimeMessage mimeMessage = mailSender.createMimeMessage();
  78. final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
  79. helper.setFrom(sendUser);
  80. helper.setSubject(title);
  81. helper.setText(htmlContent, true);
  82. //设置多个收件人
  83. String[] toAddress = toMail.split( ",");
  84. helper.setTo(toAddress);
  85. //设置多个抄送
  86. if(StringUtils.isNotBlank(replyTo)) {
  87. //helper.setReplyTo(replyTo);
  88. InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
  89. mimeMessage.setRecipients(RecipientType.CC,internetAddressCC);
  90. }
  91. //添加附件
  92. if(null != files) {
  93. for (File file : files) {
  94. helper.addAttachment(file.getName(), file);
  95. }
  96. }
  97. mailSender.send(mimeMessage);
  98. }
  99. }
    原文链接: https://blog.csdn.net/LDY1016/article/details/78365072?utm_source=blogxgwz7
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑点燃希望

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值