2016-09-02 6 views
-1

私は古いプロジェクトのクラス/メソッドを使用して電子メールをプログラムで送信しています。それは元気でしたが、古いプロジェクトでこのクラスを最後に使用して以来、何らかのGmailのセキュリティアップデートを逃してしまうエラーが出てきました。ブラウザを使ってログインとログアウトを試みましたが、それは助けになりませんでした。Javaメールの送信方法が機能しなくなったのはなぜですか?

スタックトレースを示していますGoogleはあなたの電子メールクライアントをブロックしているので、

javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbs6 
534-5.7.14 ZJAPOThluIgJLcM06Bo2G599ldMO1V8IpReZebE8FvDK3uj4KCgtg7CBEUzfjv1ZRjKTY8 
534-5.7.14 TnV7OuzgZSBLFq4N89fwfDcYSs1fnsyWLglDAEWbfbltw9eN5aXc0_S_7g8kw0EhLs7IDO 
534-5.7.14 mEsQ-FBS3EBd_F78Qv3iOpGeSACqreH_42BZ8XnouZBwfNp02PqLVqcv7wBF_-0YdtXLx4 
534-5.7.14 DZb0An9hZCoogawn1j79heQGK4g9w> Please log in via your web browser and 
534-5.7.14 then try again. 
534-5.7.14 Learn more at 
534 5.7.14 https://support.google.com/mail/answer/78754 s59sm4398674qtd.20 - gsmtp 

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:893) 
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:814) 
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:728) 
at javax.mail.Service.connect(Service.java:364) 
at javax.mail.Service.connect(Service.java:245) 
at javax.mail.Service.connect(Service.java:265) 
at javax.mail.Transport.send0(Transport.java:251) 
at javax.mail.Transport.send(Transport.java:174) 
at Emailer.sendEmail(NotificationHandler.java:70)` 
. 
. 
. 

、ここでは私のコードおそらく

class Emailer { 

    private static String host = "smtp.gmail.com"; 
    private static String user = "[email protected]"; 
    private static String pass = "mypassword"; 

    public static void sendEmail(String fromAddr, String toAddr, String subject, String body) { 
     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.port", "587"); 
     Session session = Session.getInstance(props, null); 

     MimeMessage message = new MimeMessage(session); 

     try { 
      message.setFrom(new InternetAddress(fromAddr)); 
      message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddr)); 
      message.setSubject(subject); 
      message.setText(body); 
      Transport.send(message, user, pass); 
     } 

     catch (AddressException e) { 
      e.printStackTrace(); 
     } 

     catch (MessagingException e) { 
      e.printStackTrace(); 
     } 
} 
+0

私の良さは正しいです。それを読んだ後でさえ、それは私の状況を助けなかったことをまだ理解していませんでした。羞恥心のために: – dbconfession

+0

あなたのメールアプリは最新のセキュリティ基準をサポートしていないかもしれません。セキュリティ保護されていないアプリのアカウントへのアクセスを許可する方法については、こちらをご覧ください。このリンクはhttps://support.google.com/accounts/answer/6010255です。オプション1またはオプション2を実行するか、[OK]をクリックします。 –

+0

どうもありがとうございました! – dbconfession

答えて

0

です。

Googleは、現代のセキュリティ基準を使用していないアプリやデバイスからのログインをブロックすることがあります。これらのアプリや端末は簡単に侵入することができるため、アカウントやアカウントをブロックすることでアカウントを安全に保つことができます。

私のJavaアプリケーションがテストGmailアカウントで電子メールを送信できない約2か月前にこの問題が発生しました。このlinkはあまり詳しくは説明していません。しかし、これを無効にする手順があります。

関連する問題