JAvaメール送信時に遭遇したピット
4063 ワード
以前163メールでメールを送った時は成功していたのに、中国移動の自分のメールを使った場合、どうしてもlinuxサーバーで送信できなかったので、最初は次のようなエラーを報告しました.
linuxでtelnet
mail.chinamobilesz.com 25も通じませんが、直接
mail.chinamobilesz.comをipに変更すればいいので、ネットで資料を探して他の文章を参考にした後、ホスト名とipのマッピングを設定してtelnetに接続しました.
参照先:http://blog.csdn.net/mchdba/article/details/49339715
しかしtelnetが正常に接続されたにもかかわらず、プロジェクトを開始した後もメールを送信するのは間違いで、間違いを交換しただけです.
多くの資料を探してもまだ問題を解決できなかったので、telnetができるのに、どうしてプログラムに着いたら接続できないのか分かりません.このように長い間振り回されて、最終的に組長が出馬して問題を解決して、私もやっと原因を知った.プロジェクトには次のコードがあります.
このコードを使用すると、接続は465ポートで25ではありませんが、実際にはモバイルから提供されたメールボックスに465というポートが開いていないため、465ポートでも25ポートでも接続できないため、このコードを削除してから、プロジェクトを起動して再びメールを送信することに成功しました.
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に接続しました.
参照先:http://blog.csdn.net/mchdba/article/details/49339715
しかし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ポートでも接続できないため、このコードを削除してから、プロジェクトを起動して再びメールを送信することに成功しました.