gpt4 book ai didi

java - 为什么我收到 javax.mail.AuthenticationFailedException?

转载 作者:行者123 更新时间:2023-11-30 04:57:31 31 4
gpt4 key购买 nike

谁能告诉我为什么应用会抛出这个?

W/System.err: javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:118)
at javax.mail.Transport.send0(Transport.java:188)
W/System.err: at javax.mail.Transport.send(Transport.java:118)
at com.example.**.Utils.SendMail.doInBackground(SendMail.java:71)
at com.example.**.Utils.SendMail.doInBackground(SendMail.java:19)
at android.os.AsyncTask$3.call(AsyncTask.java:378)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:289)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)


我正在尝试使用 javamail api 发送邮件。

我想提一下,我检查了邮件帐户,安全性较低的应用程序。

这是发送邮件类

package com.example.****.Utils;


import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


public class SendMail extends AsyncTask<Void, Void, Void> {

private Context context;
private Session session;


private String email;
private String subject;
private String message;

public SendMail(Context context, String email, String subject, String message)
{
this.context = context;
this.email = email;
this.subject = subject;
this.message = message;
}

@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(context, "Sending mail...", Toast.LENGTH_SHORT).show();
}

@Override
protected void onPostExecute(Void aVoid)
{
super.onPostExecute(aVoid);
Toast.makeText(context, "Message Sent", Toast.LENGTH_SHORT).show();
}

@Override
protected Void doInBackground(Void... params) {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");

session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(Config.EMAIL, Config.PASSWORD);
}
});
try {
MimeMessage mm = new MimeMessage(session);
mm.setFrom(new InternetAddress(Config.EMAIL));
mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
mm.setSubject(subject);
mm.setText(message);

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

我在这里使用它

  String email = "******";
String subject = "Activation";
String message = "This User requires activation: " + "<a href='http://localhost:80/approve/" +mAuth.getCurrentUser().getEmail() +"> Click here </a>";

SendMail sm = new SendMail(this, email, subject,message);
sm.execute();

我提供了正确的密码,我在我的 Google 帐户上检查过它应该可以使用你能帮帮我吗?

提前致谢!

最佳答案

您的实现中缺少一个属性。

doInBackground() 方法中使用 props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); 来解决这个问题问题。

解释: Gmail requires SSL google support screenshot

来自 java mail documentation :以下代码 fragment 显示了一种将所需配置合并到您的应用程序中的简单方法:

String host = "smtp.gmail.com";
String username = "user";
String password = "passwd";
Properties props = new Properties();
props.setProperty("mail.smtp.host", host);
props.setProperty("mail.smtp.ssl.enable", "true");
// set any other needed mail.smtp.* properties here
Session session = Session.getInstance(props);
MimeMessage msg = new MimeMessage(session);
// set the message content here
Transport.send(msg, username, password);

关于java - 为什么我收到 javax.mail.AuthenticationFailedException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58878136/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com