以前に163のメールボックスで電子メールを送信すると明らかに成功しましたが、中国のモバイル自身のメールボックスを使用している場合、とにかくLinuxサーバーでそれらを送信することは成功しませんでした。以下のエラーが最初に報告されました。
javax.mail.messagingexception:不明なsmtpホスト:mail.chinamobilesz.com(com.sun.mail.smtp.smtptransport.openserver(mtptransport.java:1959)〜[[Mail-1.4.7.jar:1.4.7] com.sun.mail.smtp.smtptransport.protocolconnect(smtptransport.java:65 4)〜[mail-1.4.7.jar:1.4.7] at javax.service.connect(service.java:317)〜[mail-1.7.7.7.jar:1.4.7]〜 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] 〜[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.cms.processom.service.impl.emailsendserviceimpl.sendemail(Enderviceimpl.javapl.107) 〜[emailsendserviceimpl.class:na] at com.cmsz.processom.controller.workordercontroller $ sendemail.issendema il(workordercontroller.java:555)[workordercontroller $ sendemail.class:na] rdercontroller.java:524)[workordercontroller $ sendemail.class:na] at java.lang.thread.run(thread.java:745)[na:1.7.0.11] ........
telnet mail.chinamobilesz.com 25はLinuxで動作していませんが、mail.chinamobilesz.comをipに変更するだけで使用できます。オンラインで情報を検索し、他の記事を参照し、ホスト名とIPのマッピングをセットアップした後、最終的にTelnetは正常に接続します。
ただし、Telnetは正常に接続されていますが、プロジェクトを開始した後に電子メールを送信するときにエラーを報告しましたが、それは単なる変更でした。
javax.mail.messagingexception:smtpホストに接続できませんでした:mail.chinamobilesz.com、port:25 at com.sun.mail.smtp.smtptransport.openserver(smtptransport.java:1961)〜[Mail-1.4.7.jar:1.4.7] com.sun.mail.smtp.smtptransport.protocolconnect(smtptransport.java:654)〜[mail-1.4.7.jar:1.4.7] at javax.service.connect(service.java:317)〜[mail-1.7.7.7.jar:1.4.7]〜 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] 〜[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.cms.processom.service.impl.emailsendserviceimpl.sendemail(denderendsenviceimpl.javapl.107) 〜[emailsendserviceimpl.class:na] at com.cmsz.processom.controller.workordercontroller $ sendemail.issendemail(workordercontroller.java:555)[workorderconcontroller $ 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] .....
私は多くの情報を検索しましたが、それでも問題を解決することができませんでした。できなくてもプログラムに接続できない理由がわかりません。長い闘争の後、チームリーダーはついに問題を解決し、私はついにその理由を理解しました。プロジェクトの次のコードが引き起こされたことが判明しました。
// SSL暗号化mailsslsocketfactory sf = null; try {sf = new MailSlsocketFactory(); //すべてのホストを信頼するSF.setTrustallhosts(true); proers.put( "mail.smtp.ssl.enable"、 "true"); proers.put( "mail.smtp.ssl.socketfactory"、sf); } catch(GeneralAlsecurityException e){e.printstacktrace(); }このコードを使用した後、接続は25ではなくポート465ですが、実際には私に提供された電子メールアドレスは465ポートを開いていなかったため、ポート465またはポート25に接続することは不可能です。したがって、このコードを削除した後、スタートアッププロジェクトは再び電子メールを送信します。
上記は、Javaが私があなたに紹介した電子メール機能を実装したときに発生した落とし穴の完全な説明です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!