使用AsyncTask发送Android电子邮件

时间:2013-01-17 08:06:34

标签: android debugging email asynchronous task

我最近问了一个关于以下代码的问题:

Sending Email in Android using JavaMail API without using the default/built-in app

根据上一个问题,我曾就网络错误问过这个问题:

Need Help Debugging Email Code

我的问题是,如何成功发送包含此Android代码的电子邮件,我将如何实施AsyncTask?我看到的每个教程都告诉我我应该做

extend AsyncTask {

但是,GMailSender.java已定义为:

public class GMailSender extends javax.mail.Authenticator

有人能帮助我吗?谢谢!

注:

请不要像这个问题的白痴一样,并发布了Sending Email in Android using JavaMail API without using the default/built-in app中给出的确切答案。我无法使用那种确切的编码,因为它不再可能在Android应用程序的主线程上运行网络操作。我正在寻找一种方法来使用AsyncTask,以便在后台运行该操作。我无法找到的是如何做

extend AsyncTask {

不接触

public class GMailSender extends javax.mail.Authenticator

2 个答案:

答案 0 :(得分:8)

AsyncTask doc page上有一个非常好的例子。

GMailSender对象传递给AsyncTask,并在GMailSender#sendMail期间致电doInBackground

即,

public void onClick(View v) {
    final GMailSender sender = new GMailSender("username@gmail.com", "password");
    new AsyncTask<Void, Void, Void>() {
        @Override public Void doInBackground(Void... arg) {
            try {   
                sender.sendMail("This is Subject",   
                    "This is Body",   
                    "user@gmail.com",   
                    "user@yahoo.com");   
            } catch (Exception e) {   
                Log.e("SendMail", e.getMessage(), e);   
            } 
        }
    }.execute();

}

答案 1 :(得分:1)

public void onClick(View v) {
final GMailSender sender = new GMailSender("username@gmail.com",       "password");
new AsyncTask<Void, Void, Void>() {
    @Override public Void doInBackground(Void... arg) {
        try {   
            sender.sendMail("This is Subject",   
                "This is Body",   
                "user@gmail.com",   
                "user@yahoo.com");   
        } catch (Exception e) {   
            Log.e("SendMail", e.getMessage(), e);   
        } 
    return null;}
}.execute();

}

谢谢你&#34; dokkaebi&#34;