Javax.mail.AuthenticationFailedException в Android

Я получаю следующее сообщение об ошибке в своем LogCat при попытке отправить электронное письмо с моей учетной записи Gmail с помощью JavaMail API.

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, я могу успешно войти в свою учетную запись электронной почты.

Спасибо, Шрини

Во-первых, исправить эти распространенные ошибки .

Включите отладку сеанса, чтобы узнать, дает ли трассировка протокола больше информации о том, что не так.

Возможно, вам потребуется включить доступ для менее безопасных приложений .

Перейдите на свою почту и затем нажмите на мою учетную запись, а затем выберите параметр «Вход в систему» ​​и «Безопасность».

А затем в нижней части экрана. Разрешить менее безопасные приложения: OFF выключен, поэтому включите эту опцию, и теперь вы можете отправить фоновое письмо.

Спасибо