JavaMail APIを使用してメールを送信しようとすると、このエラーが発生します。ユーザー名とパスワードは100%正しいと思います。接続しているGmailアカウントは古いアカウントです。新しいアカウントを使用するには時間がかかるとのことです。
DEBUG SMTP RCVD:535-5.7.1ユーザー名とパスワードは受け入れられません。詳細については、 535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 x35sm3011668 wfh.6 [.____をご覧ください。 。] javax.mail.SendFailedException:送信に失敗しました; ネストされた例外は: .Java:218) at javax.mail.Transport.send(Transport.Java:80) at Main。(Main.Java:41) at Main.main( Main.Java:51)
これは私のコードです:
import javax.mail。*; import javax.mail.internet。*; import Java.util。*; public class Main { 文字列d_email = "[email protected]"、 d_password = "pass"、 d_Host = "smtp.gmail.com"、 d_port = "465"、 m_to = "[email protected]"、 m_subject = "Testing"、 m_text = "testing email。"; public Main() { Properties props = new Properties(); props.put( "mail.smtp.user"、d_email); props.put( "mail.smtp.Host"、d_Host); props.put( "mail.smtp.port"、d_port); props.put( "mail.smtp .starttls.enable "、" true "); props.put(" mail.smtp.auth "、" true "); props.put(" mail.smtp.debug "、 "true"); props.put( "mail.smtp.socketFactory.port"、d_port); props.put( "mail.smtp.socketFactory.class"、 "javax.net .ssl.SSLSocketFact ory "); props.put(" mail.smtp.socketFactory.fallback "、" false "); SecurityManager security = System.getSecurityManager(); try { Authenticator auth = new SMTPAuthenticator(); Session session = Session.getInstance(props、auth); session .setDebug(true); MimeMessage msg = new MimeMessage(session); msg.setText(m_text); msg.setSubject(m_subject); msg .setFrom(new InternetAddress(d_email)); msg.addRecipient(Message.RecipientType.TO、new InternetAddress(m_to)); Transport.send(msg); } catch(Exception mex) { mex.printStackTrace(); } } public static void main(String [] args) { Main blah = new Main(); } [.___ _。] private class SMTPAuthenticator extends javax.mail.Authenticator { public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(d_email、d_password); } } }
指定されたコードスニペットはGmailアカウントで正常に機能するため、この問題は別の場所にあります。エラーメッセージに表示されたリンク をたどりましたか ?次のヒントが含まれています。
- 完全なメールアドレス([email protected]など)を入力したことを確認してください
- パスワードが正しいことを確認するためにパスワードを再入力してください。パスワードでは大文字と小文字が区別されることに注意してください。
- メールクライアントが新着メールを頻繁にチェックするように設定されていないことを確認してください。メールクライアントが10分ごとに複数回新しいメッセージをチェックする場合、クライアントはユーザー名とパスワードを繰り返し要求する場合があります。
特に最後のポイントは重要です。 Googleはこれに関して非常に厳格です。たとえば、プログラムで1分間に10回以上Gmailに接続しようとしている場合は、既にブロックされている可能性があります。しばらくお待ちください。しばらくすると、ブロックが解除されます。
メールの送信をもっと自由にしたい場合は、専用のメールホストを探すか、Apache JamesやMicrosoft Exchangeなどの独自のメールサーバーをセットアップすることをお勧めします。私はあなたの以前の質問の1つですでに これに詳細に答えました 。
私は同じ問題がありました:これを参照します link 、私はそれが私のために働いた以下の手順に従いました。
デフォルトでは、Gmailアカウントは非常に安全です。 Gmail以外のツールからGmail SMTPを使用すると、メールがブロックされます。ローカル環境でテストするには、次のようにGmailアカウントの安全性を低下させます
まったく同じ問題が発生しました。理由は、Gmailアカウントで 2段階認証 をオンにしているためです。
新しいアプリケーション固有のパスワードを生成し、それをmy Javaアプリケーションで使用すると、この「535 5.7.1」の問題はなくなりました。
公式のGoogleガイド に従って、アプリケーション固有の新しいパスワードを生成できます。
ユーザー名とパスワードは正しいものの、同じ問題に直面しましたが、調査の結果、安全性の低いアプリアクセス /を有効にすることで、アプリケーションを介してメールを送信することができましたGmailアカウントのオプション。この機能は、左側のメニューの security オプションにあります。
関連リンク:
私は同じエラーメッセージを持っています、そしてこれは私が問題を解決した方法です、
アプリパスワードを作成する:アプリパスワードを生成する方法は次のとおりです。
1. Visit your App passwords page. You may be asked to sign in to your Google Account.
2. At the bottom, click Select app and choose the app you’re using.
Click Select device and choose the device you’re using.
3. Select Generate.
4. Follow the instructions to enter the App password (the 16 character code in the yellow bar) on your device.
5. Select Done.
私はSpringブートアプリで働いていて、アプリパスワードsadsadaffferere
をメールアドレス[email protected]
。だから、私は次のようにアプリのプロパティを設定する必要があります、
# the email settings
# ------------------
spring.mail.Host=smtp.gmail.com
[email protected]
spring.mail.password=sadsadaffferere
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=false
[email protected]
その後はすべてうまくいきます
同じ認証情報が以前に機能していて機能しなくなった場合、この問題の主な原因は、Gmailクライアントでのパスワードの不一致/変更であり、Jenkinsまたは他のCIサーバーでは更新されません。そうでない場合は、@ BalusCで言及されている理由を確認してください。