• 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.  
      #显示在收件人邮箱里面的发件人名称
    14.  
      spring.mail.self.username=用户名

    三、Java代码

    1.  
      import java.io.File;
    2.  
      import java.util.List;
    3.  
       
    4.  
      import javax.mail.MessagingException;
    5.  
      import javax.mail.internet.InternetAddress;
    6.  
      import javax.mail.internet.MimeMessage;
    7.  
      import javax.mail.internet.MimeMessage.RecipientType;
    8.  
       
    9.  
      import org.apache.commons.lang3.StringUtils;
    10.  
      import org.springframework.beans.factory.annotation.Autowired;
    11.  
      import org.springframework.beans.factory.annotation.Value;
    12.  
      import org.springframework.mail.javamail.JavaMailSender;
    13.  
      import org.springframework.mail.javamail.MimeMessageHelper;
    14.  
      import org.springframework.stereotype.Service;
    15.  
       
    16.  
      /**
    17.  
      * @类名: MailSender<br>
    18.  
      * @描述: 邮件发送<br>
    19.  
      */
    20.  
      @Service
    21.  
      public class MailSendService {
    22.  
       
    23.  
      @Autowired
    24.  
      JavaMailSender mailSender;
    25.  
       
    26.  
      //发件人名称设置
    27.  
      @Value("${spring.mail.self.username}")
    28.  
      private String sendUser;
    29.  
       
    30.  
      public void sendEmail(String toMail, String title, String content) throws MessagingException {
    31.  
      final MimeMessage mimeMessage = mailSender.createMimeMessage();
    32.  
      final MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
    33.  
      message.setFrom(sendUser);
    34.  
      message.setTo(toMail);
    35.  
      message.setSubject(title);
    36.  
      message.setText(content);
    37.  
       
    38.  
      mailSender.send(mimeMessage);
    39.  
      }
    40.  
       
    41.  
      /**
    42.  
      * @方法名: sendSimpleMail<br>
    43.  
      * @描述: 发送普通文本格式的邮件<br>
    44.  
      * @param toMail 收件人,多个用英文格式逗号分隔
    45.  
      * @param replyTo 抄送人,多个用英文格式逗号分隔
    46.  
      * @param title 邮件主题
    47.  
      * @param content 邮件内容
    48.  
      * @param flies 附件
    49.  
      * @throws Exception
    50.  
      */
    51.  
      public void sendSimpleMail(String toMail, String replyTo, String title, String content, List<File> files) throws Exception {
    52.  
      final MimeMessage mimeMessage = mailSender.createMimeMessage();
    53.  
      final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    54.  
      helper.setFrom(sendUser);
    55.  
      helper.setSubject(title);
    56.  
      helper.setText(content);
    57.  
       
    58.  
      //设置多个收件人
    59.  
      String[] toAddress = toMail.split(",");
    60.  
      helper.setTo(toAddress);
    61.  
       
    62.  
      //设置多个抄送
    63.  
      if(StringUtils.isNotBlank(replyTo)) {
    64.  
      //helper.setReplyTo(replyTo);
    65.  
      InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
    66.  
      mimeMessage.setReplyTo(internetAddressCC);
    67.  
      }
    68.  
       
    69.  
      //添加附件
    70.  
      if(null != files) {
    71.  
      for (File file : files) {
    72.  
      helper.addAttachment(file.getName(), file);
    73.  
      }
    74.  
      }
    75.  
       
    76.  
      mailSender.send(mimeMessage);
    77.  
      }
    78.  
       
    79.  
      /**
    80.  
      * @方法名: sendHtmlMail<br>
    81.  
      * @描述: 发送HTML格式的邮件<br>
    82.  
      * @param toMail 收件人,多个用英文格式逗号分隔
    83.  
      * @param replyTo 抄送人,多个用英文格式逗号分隔
    84.  
      * @param title 邮件主题
    85.  
      * @param htmlContent 邮件内容
    86.  
      * @param files 附件
    87.  
      * @throws Exception
    88.  
      */
    89.  
      public void sendHtmlMail(String toMail, String replyTo, String title, String htmlContent, List<File> files) throws Exception {
    90.  
      final MimeMessage mimeMessage = mailSender.createMimeMessage();
    91.  
      final MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
    92.  
      helper.setFrom(sendUser);
    93.  
      helper.setSubject(title);
    94.  
      helper.setText(htmlContent, true);
    95.  
       
    96.  
      //设置多个收件人
    97.  
      String[] toAddress = toMail.split(",");
    98.  
      helper.setTo(toAddress);
    99.  
       
    100.  
      //设置多个抄送
    101.  
      if(StringUtils.isNotBlank(replyTo)) {
    102.  
      //helper.setReplyTo(replyTo);
    103.  
      InternetAddress[] internetAddressCC = InternetAddress.parse(replyTo);
    104.  
      mimeMessage.setRecipients(RecipientType.CC,internetAddressCC);
    105.  
      }
    106.  
       
    107.  
      //添加附件
    108.  
      if(null != files) {
    109.  
      for (File file : files) {
    110.  
      helper.addAttachment(file.getName(), file);
    111.  
      }
    112.  
      }
    113.  
       
    114.  
      mailSender.send(mimeMessage);
    115.  
      }
    116.  
       
    117.  
      }
      原文链接: https://blog.csdn.net/LDY1016/article/details/78365072?utm_source=blogxgwz7
  • 相关阅读:
    数据结构----------堆栈
    数据结构----------双向链表
    剑指offer32----之字形打印一颗二叉树
    剑指offer31----栈的压入、弹出序列
    MySQL----日期处理函数
    1.1 文档PUT内部原理
    1 集群状态、增删改查、全量替换、强制创建、设置单个index的分片数副本数
    编译问题:'<invalid-global-code>' does not contain a definition for 'Store' and no extension method 'XXX' accepting a first argument of type '<invalid-global-code>' could be found
    ES timeout 的一些笔记
    elasticsearch 5.0以上不支持consistency 和 quorum
  • 原文地址:https://www.cnblogs.com/lykbk/p/sdfsdfskhAFDK34W5R3457IY34Y34T5345498.html
Copyright © 2020-2023  润新知