您的位置:首页 > 编程语言 > Java开发

Spring Boot 使用465端口发送邮件

2018-10-17 18:58 1121 查看

 

2017年10月27日 15:04:24 伊宇紫 阅读数:2710 标签: 465端口邮件springboot 更多 个人分类: Java   版权声明:本文为博主原创文章,未经博主允许不得转载。 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: