之前用163邮箱发邮件时明明是成功的,但是使用中国移动自己的邮箱时,无论如何在linux服务器中都发送不成功,一开始报如下错误:
javax.mail.MessagingException: Unknown SMTP host: mail.chinamobilesz.com
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1959) ~                                                                                        [mail-1.4.7.jar:1.4.7]
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:65                                                                                        4) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Service.connect(Service.java:317) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Service.connect(Service.java:176) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Service.connect(Service.java:125) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Transport.send0(Transport.java:194) ~[mail-1.4.7.jar:1.4.7                                                                                        ]
        at javax.mail.Transport.send(Transport.java:124) ~[mail-1.4.7.jar:1.4.7]
        at com.cmsz.processOm.service.impl.EmailSendServiceImpl.sendEmail(EmailS                                                                                        endServiceImpl.java:107) ~[EmailSendServiceImpl.class:na]
        at com.cmsz.processOm.controller.WorkOrderController$SendEmail.isSendEma                                                                                        il(WorkOrderController.java:555) [WorkOrderController$SendEmail.class:na]
        at com.cmsz.processOm.controller.WorkOrderController$SendEmail.run(WorkO                                                                                        rderController.java:524) [WorkOrderController$SendEmail.class:na]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0.11]
......

在linux中telnet mail.chinamobilesz.com 25也不通,但是直接把mail.chinamobilesz.com换成ip就可以了,在网上查找资料并参考其他文章后,设置了主机名和ip的映射后终于telnet成功连接:

但是尽管telnet成功连接了,启动项目后发送邮件依然报错,只不过换了一个错误而已:
javax.mail.MessagingException: Could not connect to SMTP host: mail.chinamobilesz.com, port: 25
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961) ~[mail-1.4.7.jar:1.4.7]
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Service.connect(Service.java:317) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Service.connect(Service.java:176) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Service.connect(Service.java:125) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Transport.send0(Transport.java:194) ~[mail-1.4.7.jar:1.4.7]
        at javax.mail.Transport.send(Transport.java:124) ~[mail-1.4.7.jar:1.4.7]
        at com.cmsz.processOm.service.impl.EmailSendServiceImpl.sendEmail(EmailSendServiceImpl.java:107) ~[EmailSendServiceImpl.class:na]
        at com.cmsz.processOm.controller.WorkOrderController$SendEmail.isSendEmail(WorkOrderController.java:555) [WorkOrderController$SendEmail.class:na]
        at com.cmsz.processOm.controller.WorkOrderController$SendEmail.run(WorkOrderController.java:524) [WorkOrderController$SendEmail.class:na]
        at java.lang.Thread.run(Thread.java:745) [na:1.7.0.11]
......

查找很多资料还是没能解决问题,不明白明明可以telnet的,为什么到了程序中就连接不上。如此折腾了好久,最终由组长出马解决了问题,我也才终于知道了原因。竟然是项目中如下代码导致:
// SSL加密
MailSSLSocketFactory sf = null;
    try {
      sf = new MailSSLSocketFactory();
      // 设置信任所有的主机
      sf.setTrustAllHosts(true);
      proerties.put("mail.smtp.ssl.enable", "true");
      proerties.put("mail.smtp.ssl.socketFactory", sf);
    } catch (GeneralSecurityException e) {
      e.printStackTrace();
    }

使用了这一段代码后,连接的是465端口,不是25,但是实际上移动提供给我的邮箱没有开465这个端口,因此便造成不论是465还是25端口都连接不上,于是去掉这段代码后,启动项目再次发送邮件便成功了。

java发送邮件时遇到的坑的更多相关文章

  1. Java发送邮件时标题和发件人乱码

    最近碰到一个问题,Java发送邮件时,查看邮箱结果,发件人及邮件标题正文全部乱码 通过翻阅资料,原因及解决方法如下: // Set Subject: 头字段 message.setSubject(Mi ...

  2. Java发送邮件初窥

    一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...

  3. Java发送邮件,所遇到的常见需求

    明天要做关于发送邮件的接口,虽然我之前已用Java Mail做过许多关于邮件的发送.但同事说有点难点,虽我还不知难点在哪,还是要复习下.凡事预则立,不预则废嘛~ 所需的包: Java Mail : 目 ...

  4. 使用java发送邮件sp自动发送邮件方法

    注意:将jar包复制到web-info文件夹下lib: activation.jar mail.jar //发送邮箱 public static String sendEmail(String sen ...

  5. Java发送邮件(带附件)

    实现java发送邮件的过程大体有以下几步: 准备一个properties文件,该文件中存放SMTP服务器地址等参数. 利用properties创建一个Session对象 利用Session创建Mess ...

  6. Java - 31 Java 发送邮件

    Java 发送邮件 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) . 你可以在 ...

  7. Java面试中遇到的坑【填坑篇】

    看到大家对上篇<Java面试中遇到的坑>一文表现出强力的关注度,说明大家确实在面试中遇到了类似的难题.大家在文章留言处积极留言探讨面试中遇到的问题,其中几位同学还提出了自己的见解,我感到非 ...

  8. Java-Runoob-高级教程:Java 发送邮件

    ylbtech-Java-Runoob-高级教程:Java 发送邮件 1.返回顶部 1. Java 发送邮件 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 Java ...

  9. Java发送邮件必带超时时间配置

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 在线上遇到了一个发送邮件的问题,记录一下. 一.先说 ...

随机推荐

  1. jmeter用Firefox录制https协议证书问题解决

    录制脚本的时候,比如录制https协议的百度网站 https://www.baidu.com ,所有录制设置均正常,但是在jmeter录制控制器里面就是没有任何录制的请求. 这个时候提示说证书不对 1 ...

  2. Python CRM项目四

    实现Django Admin的多对多的复选框效果 效果:左边显示的是未选中的字段,右边显示的是已选中的字段,两边点击的标签可以互相更换 首先在king_admin.py中增加filter_horizo ...

  3. 简易发号SQL,可用于生成指定前缀自增序列,如订单号,生成优惠券码等

    需求1:订单号要求唯一.长度不太长.自增.但不能通过早上订单号和晚上订单号相减推算出平台大概一天的单量 需求2:要求生成10w张优惠券,要求券码唯一.不能太长,不能轻易猜测出其他券码 根据这些需求提供 ...

  4. Go笔记-结构、类型、常量

    [类型] 1.可以包含数据的变量(或常量),可以使用不同的数据类型或类型来保存数据.使用 var 声明的变量的值会自动初始化为该类型的零值.类型定义了某个变量的值的集合与可对其进行操作的集合.   2 ...

  5. CentOS 7.1静默安装11.2.0.3 64位单机数据库软件

    第1章 CentOS 7.1静默安装11.2.0.3 64位单机数据库软件 1.1  安装前的准备工作 1.1.1      软件准备 1.1.2      检查硬件 注意这里的内存应该满足要求,不然 ...

  6. springboot(二十):使用spring-boot-admin对spring-boot服务进行监控

    上一篇文章<springboot(十九):使用Spring Boot Actuator监控应用>介绍了Spring Boot Actuator的使用,Spring Boot Actuato ...

  7. 洛谷 [P1020] 导弹拦截 (N*logN)

    首先此一眼就能看出来是一个非常基础的最长不下降子序列(LIS),其朴素的 N^2做法很简单,但如何将其优化成为N*logN? 我们不妨换一个思路,维护一个f数组,f[x]表示长度为x的LIS的最大的最 ...

  8. 使用正则表达式和数组形式获取get方法传入的值

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. document.activeElement 过滤选择文件弹窗导致的页面失焦

    在线考试页面,常常需要检测用户是否作弊. 一般是监听页面是否失焦的方式,而失焦的方式有很多种,比如QQ弹窗,切换页面,切换程序,input文件上传选择文件等 选择文件是正常情况,这种情况下需要过滤 本 ...

  10. 怎样在VS2010-2017中使用LightningChart绘图控件?

    为了方便开发人员能更快速的使用开发工具,下面给大家提供LightningChart® Ultimate SDK v.8 使用手册: 1.   安装软件 -          运行 setup.exe ...