java 发送邮件 ip被网易拉黑_java_Java实现发送邮件功能时碰到的坑,之前用163邮箱发邮件时明明是 - phpStudy...

Java实现发送邮件功能时碰到的坑

之前用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实现发送邮件功能时碰到的坑的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对phpstudy网站的支持!相关阅读:

Android App中ViewPager与Fragment结合的一些问题解决

Android Studio中配置OpenCV库开发环境的教程

JSON.parse()和JSON.stringify()使用介绍

Mac电脑登录支付宝无法输入密码的解决方法

Mac如何让多个硬盘拥有多个睡眠时间且长短都不一样

Java设计模式编程中简单工厂与抽象工厂模式的使用实例

Android编程实用技术小结

Android开发笔记之:深入理解Cursor相关的性能问题

mysql 表维护与改造代码分享

fedora 安装注意事项

oracle 创建表空间步骤代码

深入剖析java中的集合框架

类似天猫商品详情随浏览器移动的示例代码

C#中Winform窗体Form的关闭按钮变灰色的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值