2017-05-02 19 views
2

Javaを使用してGmailアカウントにメールを送信しようとしています。私はすべてを正しく行っているように見えますが、認証に失敗しました。 Googleは、送信を可能にする「安全性の低いアプリ」機能をオンにしたいと考えています。安全性の低いアプリを有効にすることなく、JavaからGmailを使用してメールを送信

GmailがJavaに満足し、「安全性の低いアプリをオンにする」という障害を投げかけないようにコードする方法はありますか?

エラー:

javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/signin/continue?sarp=...U 
534-5.7.14 FigguJaZwDtp... 
534-5.7.14 ...o> 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/... - gsmtp 

コード:

String hostSmtpUser = "[email protected]"; 
String host = "smtp.gmail.com"; 
String hostPort = "587"; 
String hostSmtpPassword = "thepassword"; 

Properties properties = System.getProperties(); 
properties.setProperty("mail.smtp.user", hostSmtpUser); 
properties.setProperty("mail.smtp.host", host); 
properties.setProperty("mail.smtp.starttls.enable", "true"); 
properties.setProperty("mail.smtp.port", hostPort); 
properties.setProperty("mail.smtp.auth", "true"); 

Session oSession; 
if (true == ToolsCommon.isEmpty(hostSmtpUser)) 
    oSession = Session.getInstance(properties); 
else 
    oSession = Session.getInstance(properties, new javax.mail.Authenticator() 
    { 
     protected PasswordAuthentication getPasswordAuthentication() 
     { 
     return new PasswordAuthentication(hostSmtpUser, hostSmtpPassword); 
     } 
    }); 

// Compose the message 
try 
{ 
    MimeMessage message = new MimeMessage(oSession); 
    message.setFrom(new InternetAddress(from)); 
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
    message.setSubject(Subject); 
    message.setText(Body); 

    // Send message 
    Transport.send(message); 
} 

catch (MessagingException ex) 
{ 
    // Log the error. 
    ToolsLog.logError(TypeLog.ui, ex); 
} 

私はすでに、研究を行ったので、私の知識へのコードは問題ではありません、ただ安全性の低いアプリのメッセージのための回避策が表示されません。

参考:デフォルトでは

Ref 1 Ref 2 Ref 3 Ref 4

答えて

0

、Gmailは、パスワードベースの認証を許可していません - あなたは、「安全性が低いアプリケーション」へのを許可する必要があるだろう理由ですあなたのプログラムをそのまま使用してください。

代わりにパスワードを直接使用しないようにuse OAuth 2.0にすることができます。この方法はGoogleが安全だと考えられており、アカウントの設定を変更する必要はありません。

関連する問題