通常、我々はローカルにメールを送信するためにJavaを使用し、通常はその後、問題が発生する可能性があり、問題ではありませんが、サーバーにデプロイ。もちろん、これはまた、オペレータと関係を持っています。例えば、私はコーヒーのホスト上の仮想マシンを購入した後、個人的なウェブサイトのアップを展開しなければならなかった、通常は問題ではなく、それほどの制限ではありません。
しかし、制限が導入口の向きが開いていない場合は、クラウドアリで、より多くの、例えば、それはあなたがサーバーにインストールしたソフトウェアのセクションにつながる可能性があり、そのような一般的に使用されるTomcatのように、使用されません。
ポートが開いて、そして第二にホワイトリストの設定の問題ではないので。
次のようにアリはクラウドサーバのポート25について話をする今日が無効になっていると、メッセージを送信に成功し、それを修正する方法を、最初の完全なコードを投稿:
パッケージcom.blog.springboot.utils。 輸入java.util.Properties; 輸入javax.mail.Authenticator。 輸入javax.mail.Messageの。 輸入javax.mail.MessagingException。 輸入javax.mail.PasswordAuthentication。 インポートのjavax.mail.Session。 輸入javax.mail.Transport。 輸入javax.mail.internet.AddressException。 輸入javax.mail.internet.InternetAddress。 輸入javax.mail.internet.MimeMessageの。 輸入javax.mail.internet.MimeMessage.RecipientType。 パブリック クラスMailutilsに{ 公共の 静的な 無効SENDMAIL(文字列の電子メール、文字列emailMsg)が スローAddressException、てMessagingExceptionを{ // 1.创建一个程序与邮件服务器会话对象セッション のプロパティの小道具 = 新しいプロパティ(); props.setProperty( "mail.transport.protocol"、 "SMTP" )。 props.setProperty( "mail.host"、 "smtp.163.com" ); props.setProperty( "mail.smtp.auth"、 "真"); // 指定验证为真 props.put( "mail.smtp.port"、 "465" ); props.setProperty( "mail.smtp.socketFactory.class"、 "javax.net.ssl.SSLSocketFactory" ); props.setProperty("mail.smtp.socketFactory.fallback"、 "偽" ); props.setProperty( "mail.smtp.socketFactory.port"、 "465" ); // 创建验证器 認証AUTH = 新しい認証(){ 公共たPasswordAuthentication getPasswordAuthentication(){ 戻り 、新しい( "[email protected]"、 "テスト"たPasswordAuthenticationを)。 } }。 セッションセッション = Session.getInstance(小道具、AUTH)。 // 2.创建一个メッセージ、它相当于是邮件内容 メッセージメッセージ = 新しいで、MimeMessage(セッション)。 メッセージ。新新たInternetAddress( "[email protected]")); // 送信者を設定 message.setRecipientを(RecipientType.TO、新しい新たInternetAddress(メールで)); // 設定した送信モードと受信 / * 文字列のランダム 文字列のpasswd = CustomeEncryptionUtil。 bcryptPwd(PWD)* / 文字列の内容 = "正常に登録" ; message.setSubject(コンテンツ); message.setContent(emailMsg、 "テキスト/ HTML;のcharset = UTF-8" ); // 3.メールの転送を作成します送信 Transport.send(メッセージ); } 公共の 静的な 無効メイン(文字列[]引数){ 試み{ MailUtils.sendMail(「[email protected]」、「あなたは前例のない幸福を得るでしょう私のブログへこんにちは、ようこそ」); } キャッチ(てMessagingException E){ // TODO自動生成catchブロック e.printStackTrace(); のSystem.out.println( "失敗" ); } } }
キーは、このコアということです。
props.put( "mail.smtp.port"、 "465" ); props.setProperty( "mail.smtp.socketFactory.class"、 "javax.net.ssl.SSLSocketFactory" ); props.setProperty( "mail.smtp.socketFactory.fallback"、 "偽" ); props.setProperty( "mail.smtp.socketFactory.port"、 "465");
私は次のようにパッケージの依存関係があるメールを使用します。
<! -发邮件- > <依存> <groupIdを> com.sun.mail </ groupIdを> <たartifactId>のjavax.mail </たartifactId> <バージョン> 1.5.2 </ version>の <スコープ>提供</スコープ> </依存関係>
また、について話あなたはあなたのサーバーを確認する場合は、ポートが利用可能である、(、テスト時間を節約し、効率を改善するために、サーバーに、このような地域を展開所有する)コマンドで使用することができます:
telnetのsmtp.163.com 465
サーバがこの結果を返した場合(一般的に入手可能表される)は以下の通りです。
220.181.12.11をしようと... SMTPに接続されています。163 .COM。 エスケープ文字は「^]」。 接続は外部ホストによって閉じられました。
なりそうであれば、通常は使用できない表現(通常しようで立ち往生されて、その後、サーバーは再びしようと試みるかもしれないが、それでも役に立ちません):
220.181.12.16をしようと...