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

Spring Boot 使用465端口发送邮件的更多相关文章

  1. jumpservice使用465端口发送邮件

    阿里云.华为云等云服务器默认屏蔽掉了25端口后,内网服务器如何通过跳板机发送邮件到外网邮箱. 如果是可联网的阿里云机器,可以直接配置mailx使用465端口发送邮件.需要进行ssl验证配置. Cent ...

  2. Spring Boot中使用JavaMailSender发送邮件

    相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看 ...

  3. 阿里云 Linux 启用465端口发送邮件

    阿里云 Linux 启用465端口发送邮件 环境:阿里云 Linux Centos 7.4 x64 注:阿里云默认禁用25邮件端口,需要启动465端口加密进行邮件发送. 注:确保邮箱开启SMTP服务, ...

  4. centos上mailx通过465端口发送邮件

    最近在看zabbix发送邮件的时候,发现自己的邮件总是无法发送,这里可能是外网防火墙禁止25端口,那么如何绕过25端口呢?  我使用的是163邮箱的TSL加密协议465端口 由于mailx基本配置很简 ...

  5. Spring Boot修改启动端口

    spring boot是个好东西,可以不用容器直接在main方法中启动,而且无需配置文件,方便快速搭建环境.可是当我们要同时启动2个springboot工程时,就会有问题,有可能会因为8080端口被第 ...

  6. spring boot 不占用端口方式启动

    随着微服务架构的流行,想要启动一个微服务架构项目就要开启好多端口,有时候一台机器上部署的项目多的时候,端口资源就比较紧张了,其实有的微服务组件仅仅只是提供RPC服务,可以不用占用web启动的端口,此时 ...

  7. spring boot 指定启动端口

    spring boot 默认端口为8080 1.修改为指定端口 (1)修改配置文件 src/main/resources/application.properties server.port= (2) ...

  8. java 465端口发送邮件

    package com.fr.function; import java.io.IOException; import java.security.Security; import java.util ...

  9. spring boot 修改Tomcat端口

    package com.tsou.Controller; import org.springframework.boot.*; import org.springframework.boot.auto ...

随机推荐

  1. Mysql 死锁分析学习

    https://blog.csdn.net/aesop_wubo/article/details/8286215   * CREATE TABLE `user_item` ( * `id` BIGIN ...

  2. js 迭代器 解说

    这里要说的是迭代器,是一种思路而已,代码相对来不是最关键的,个人认为,最关键的部分是实现的思路 要求: 在一个网页中,将所有的 p 元素的内容进行替换,但是在特定的位置的 p 元素是要有差异的进行替换 ...

  3. LinkedHashMap 实现总结

    继承于HashMap,定义了新的内部类Entry用于实现双向链表保存记录的插入或访问顺序: accessOrder用于指示链表保存记录采用的顺序,true为访问顺序,false为插入顺序: 加入新的记 ...

  4. angularjs 请求数据转换为Form Data传参

    在angularjs中配置好服务,有时传参会导致后台借不到值或者后台直接报错: 这就与后台框架有关,如果后台是以public ModelAndView接收接口传过来的参数,这种情况,前台传参的形式比较 ...

  5. Cache雪崩效应

    大概半年前,Guang.com曾发生一次由于首页部分cache失效,导致网站故障. 故障分析: 当时逛正在做推广,流量突然暴增,QPS达到5000+,当首页部分cache失效时,需要查询DB, 但由于 ...

  6. ArcGIS模型构建器案例教程-批量复制工作空间所有要素类

    ArcGIS模型构建器案例教程-批量复制工作空间所有要素类 目的:批量复制工作空间所有要素类 工具名称:WorkspaceCopyFeatureClasses 使用方法:输入工作空间,指定输出工作空间 ...

  7. css3的2D和3D的转换

    一:2D转换: 通过 CSS3  transform转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸. 2D移动:translate().使用translate()函数,你可以把元素从原来的位置移 ...

  8. Microsoft® SQL Server® 2012 功能包

    Microsoft® SQL Server® 2012 功能包 http://www.microsoft.com/zh-cn/download/details.aspx?id=29065 Micros ...

  9. Spark之机器学习(Python版)(一)——聚类

    https://www.cnblogs.com/charlotte77/p/5437611.html

  10. ok6410下的uboot分析与实现

    uboot 由两阶段代码组成: •第一阶段主要步骤: 1.将cpu设置为svc模式 2.关闭mmu 3.设置外设端口地址 4.关闭watchdog 5.关闭中断 6.初始化时钟 7.初始化内存DRAM ...