JavaMail API AuthenticationFailedException

时间:2016-07-02 20:25:42

标签: java android gmail javamail

抱歉我的英文! 当我尝试使用Android中的JavaMail API从我的Gmail帐户发送电子邮件时收到错误。 我收到此错误:AuthenticationFailedException。 我试过以下: 带密码的电子邮件地址是正确的(我还测试了另一个邮件地址)。 谷歌中的设置是正确的。 我用端口465测试,然后我得到另一个例外。 我在互联网上搜索了3天,发现没有任何帮助。

public class MailSending extends AsyncTask<Void, Void, Void> {
private String mail;
private String pass;
private String an;
private String betreff;
private String nachricht;

public MailSending(String mail, String pass, String an, String betreff, String nachricht) {
    this.mail = mail;
    this.pass = pass;
    this.an = an;
    this.betreff = betreff;
    this.nachricht = nachricht;
}

@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);
}

@Override
protected Void doInBackground(Void... params) {
    final String host = "smtp.gmail.com";
    Properties props = new Properties();

    props.put("mail.smtp.host", host);
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.port", "587");

    Session ses = Session.getInstance(props, new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(mail, pass);
        }
    });

    try {
        MimeMessage message = new MimeMessage(ses);
        InternetAddress addressTo = new InternetAddress(an);
        InternetAddress addressFrom = new InternetAddress(mail);

        message.setFrom(addressFrom);
        message.setRecipient(Message.RecipientType.TO, addressTo);
        message.setSubject(betreff);
        message.setContent(nachricht, "text/plain");

        Transport.send(message);
        Log.d("Nachricht:", "erfolgreich gesendet!");

    } catch (MessagingException e) {
        e.printStackTrace();
    }
    return null;
}
  

W / System.err:javax.mail.AuthenticationFailedException

     

W / System.err:在javax.mail.Service.connect(Service.java:319)

     

W / System.err:在javax.mail.Service.connect(Service.java:169)

     

W / System.err:在javax.mail.Service.connect(Service.java:118)

     

W / System.err:在javax.mail.Transport.send0(Transport.java:188)

     

W / System.err:在javax.mail.Transport.send(Transport.java:118)

     

W / System.err:at com.example.tuba.login.MailSending.doInBackground(MailSending.java:72)

     

W / System.err:at com.example.tuba.login.MailSending.doInBackground(MailSending.java:25)

     

W / System.err:在android.os.AsyncTask $ 2.call(AsyncTask.java:288)

     

W / System.err:at java.util.concurrent.FutureTask.run(FutureTask.java:237)

     

W / System.err:在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)

     

W / System.err:at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

     

W / System.err:at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)

     

W / System.err:at java.lang.Thread.run(Thread.java:841)

3 个答案:

答案 0 :(得分:1)

您找到了JavaMail FAQ吗?

您很可能需要enable less secure apps,但如果没有看到details of your exception则很难确定。

答案 1 :(得分:1)

此问题可能是由Gmail帐户保护引起的。只需点击下面的链接并停用一些安全设置即可。

-

Vielleicht wird dieses问题durch den Gmail-Schutzausgelöst。 ÜberprüfedeineSicherheitseinstellungen und deaktiviere einige Einstellungen。

链接:https://www.google.com/settings/security/lesssecureapps

答案 2 :(得分:0)

我在Properties类中找到了一个缺少的参数。请添加以下代码,然后重试。

props.put("mail.smtp.ssl.trust", "smtp.gmail.com");

根据文件:

https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html