之前用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. Sql Server的艺术(六) SQL 子查询,创建使用返回多行的子查询,子查询创建视图

    子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中. 子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据. 子查询可以在SELECT,INSERT,UPDA ...

  2. bzoj 4562 [Haoi2016]食物链

    4562: [Haoi2016]食物链 Time Limit: 10 Sec  Memory Limit: 128 MB Description 如图所示为某生态系统的食物网示意图,据图回答第1小题 ...

  3. VS下WPF自定义控件的基本步骤和基本代码实现

    一.自定义控件的基本步骤: (本示例项目名称为:W:添加的自定义控件名称为) 1.  在"解决方案资源管理器"窗口的项目名上: 右击à添加à新建项(Ctrl+Shift+A) 2. ...

  4. Chrome浏览器调试Android的Webview

    chrome://inspect Android:4.4+ Chrome 30+ 首次使用需要FQ

  5. 基于Vue2写的一个有关美食项目

    刚学Vue练习的一个项目 使用Vue2+vue-router+vuex+axios+webpack router使用了默认的hash模式 引入了高德地图和element-ui 项目地址点击这里 演示地 ...

  6. zalenium 应用

    zalenium是一个Selenium Grid扩展,用Docker容器动态扩展你的本地网格.它使用docker-selenium在本地运行Firefox和Chrome中的测试,如果需要不同的浏览器, ...

  7. Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated ?

    Thread.stop, Thread.suspend, Thread.resume被标记为废弃的方法.在查看JDK的文档时,提到了下面的参考文章,先是英文版,接着是中文翻译. Why is Thre ...

  8. BZOJ 2287. [HZOI 2015]疯狂的机器人 [FFT 组合计数]

    2287. [HZOI 2015]疯狂的机器人 题意:从原点出发,走n次,每次上下左右不动,只能在第一象限,最后回到原点方案数 这不煞笔提,组合数写出来发现卷积NTT,然后没考虑第一象限gg 其实就是 ...

  9. ajax调用handler,使用HttpWebRequest访问WCF服务

    引言 随着手机及移动设备的普及,移动端的应用也进入了热潮.以前PC端的门户网站,大多也均推出了适配移动设备的网站或者APP,再差的也注册了个公众号.在移动应用开发中,目前据我所了解到的解决方案有:1. ...

  10. String,StringBuffer,StringBuilder的区别

    数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 比如数据库就是对硬盘中的数据进行有规则的管理,可以进行增删改查工作,而良好的数据结构可以优化这些操作, 也许大家会想这些和St ...