gpt4 book ai didi

android - Android 中的 javax.mail.AuthenticationFailedException

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:14 26 4
gpt4 key购买 nike

尝试使用 JavaMail API 从我的 Gmail 帐户发送电子邮件时,我在 LogCat 中收到以下错误消息。

11-09 11:04:14.385: W/System.err(18443): javax.mail.AuthenticationFailedException
11-09 11:04:14.385: W/System.err(18443): at javax.mail.Service.connect(Service.java:319)
11-09 11:04:14.385: W/System.err(18443): at javax.mail.Service.connect(Service.java:169)
11-09 11:04:14.385: W/System.err(18443): at javax.mail.Service.connect(Service.java:118)
11-09 11:04:14.385: W/System.err(18443): at com.srindroid.sendemail.MainActivity$RetrievedFeedTask.doInBackground(MainActivity.java:88)
11-09 11:04:14.385: W/System.err(18443): at com.srindroid.sendemail.MainActivity$RetrievedFeedTask.doInBackground(MainActivity.java:1)
11-09 11:04:14.385: W/System.err(18443): at android.os.AsyncTask$2.call(AsyncTask.java:288)
11-09 11:04:14.385: W/System.err(18443): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
11-09 11:04:14.385: W/System.err(18443): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
11-09 11:04:14.385: W/System.err(18443): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-09 11:04:14.385: W/System.err(18443): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-09 11:04:14.385: W/System.err(18443): at java.lang.Thread.run(Thread.java:841)

源代码

package com.srindroid.sendemail;

import java.util.Properties;

import javax.mail.Authenticator;
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;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

Session session = null;
ProgressDialog pdialog = null;
Context context = null;
EditText rec, subject, message;
String strRec, strSubject, strMessage;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

context = this;

Button submit = (Button) findViewById (R.id.btnSendEmail);
rec = (EditText) findViewById (R.id.txtToEmail);
subject = (EditText) findViewById (R.id.txtSubject);
message = (EditText) findViewById (R.id.txtMessage);

submit.setOnClickListener(this);
}

@Override
public void onClick(View v) {
strRec = rec.getText().toString();
strSubject = subject.getText().toString();
strMessage = subject.getText().toString();

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", "false");
props.put("mail.smtp.port", "465");

session = Session.getDefaultInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("indianclassics27@gmail.com",**<MyPassword>**);
}
});

pdialog = ProgressDialog.show(context, "Send Email", "Sending Email...");
RetrievedFeedTask task = new RetrievedFeedTask();
task.execute();

}

class RetrievedFeedTask extends AsyncTask<String, Void, String>{

@Override
protected String doInBackground(String... params) {
try{

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("indianclassics27@gmail.com"));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(strRec));
message.setSubject(strSubject);
message.setContent(strMessage, "text/html; charset=utf-8");

Transport transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage(message, message.getAllRecipients());


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

@Override
protected void onPostExecute(String result) {
pdialog.dismiss();
rec.setText("");
subject.setText("");
message.setText("");
Toast.makeText(getApplicationContext(), "Email Sent", Toast.LENGTH_LONG).show();
super.onPostExecute(result);
}



}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}


}

能否请您帮助我了解是什么导致了此 AuthenticationFailedException?请注意,当我在 www.gmail.com 中使用相同的凭据时,我能够成功登录到我的电子邮件帐户。

谢谢,斯里尼

最佳答案

首先,修复这些 common mistakes .

打开 Session debugging查看协议(protocol)跟踪是否提供了有关问题的更多线索。

您可能需要 enable access for less secure apps .

关于android - Android 中的 javax.mail.AuthenticationFailedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26825425/

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