javax.mail.AuthenticationFailedException Android中 [英] javax.mail.AuthenticationFailedException in Android

查看:394
本文介绍了javax.mail.AuthenticationFailedException Android中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I receive the below error message in my LogCat when trying to send an email from my Gmail account using 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)

来源$ C ​​$ C

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相同的凭据,我能够成功登录到我的电子邮件帐户。

Could you please help me in understanding on what creates this AuthenticationFailedException? Please note that when I use the same credentials in www.gmail.com, I'm able to successfully login into my email account.

谢谢,
作者Srini

Thanks, Srini

推荐答案

首先,解决这些的常见的错误的。

打开rel=\"nofollow\">会话调试,看是否协议跟踪提供有关什么是错的更多线索。

Turn on Session debugging to see if the protocol trace gives any more clues about what's wrong.

您可能需要启用安全性较低的应用访问。

这篇关于javax.mail.AuthenticationFailedException Android中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆