抱歉我的英文!
当我尝试使用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)
答案 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。
答案 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