之前用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. IDEA精髓快捷键

    删除一行:Ctrl+X 快速查找:Ctrl+F 打开文件目录结构: Ctrl+F12 可以把代码包在一个块内:Ctrl+Alt+T 替换文本:Ctrl+R, Alt+Shift+Up/Down,上/下 ...

  2. Java对List进行分页

    Java对组装的List分页 以前一直是在DAO层直接从数据库里分页,但是今天因为有些数据,需要混合展示,就是根据条件取出了多个对象的集合,然后把这些多个List放到一个List里,然后在从这个Lis ...

  3. @Controller注解

    Spring从2.5版本后开始引入注解,用户可以使用@Controller,@RequestMapping,@RequestParam,@ModelAttribute等类似这样的注解. @Contro ...

  4. isFile() exists() isDirectory()的区别

    isFile()public boolean isFile()测试此抽象路径名表示的文件是否是一个标准文.如果该文件不是一个目录,并且满足其他与系统有关的标准,那么该文件是标准文件.由Java应用程序 ...

  5. CSS中的选择器之类选择器和id选择器

    1.css中的选择器: 1.类选择器,又叫class选择器 2.id选择器 3.html元素选择器(又叫标签选择器) 4.通配符选择器 5.伪类选择器 6.组合选择器(多元素选择器,子元素选择器,后代 ...

  6. 【java学习】spring mvc 公共dao的实现,定义基本的增删改查

    接口类: package com.blog.db.dao; import com.blog.util.Pagination; import java.util.List; public interfa ...

  7. XBIM 基于 WexBIM 文件在 WebGL 浏览和加载

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  8. 关于metaclass,我原以为我是懂的

    关于Python2.x中metaclass这一黑科技,我原以为我是懂的,只有当被打脸的时候,我才认识到自己too young too simple sometimes native. 为什么之前我认为 ...

  9. 分离Webpack开发环境与生产环境的配置

    这是Webpack+React系列配置过程记录的第五篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

  10. SpringMVC源码情操陶冶-DispatcherServlet简析(二)

    承接前文SpringMVC源码情操陶冶-DispatcherServlet类简析(一),主要讲述初始化的操作,本文将简单介绍springmvc如何处理请求 DispatcherServlet#doDi ...