6

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

在不使用默认/内置应用程序的情况下使用 JavaMail API 在 Android 中发送电子邮件

根据之前的问题,我曾就网络错误提出过这个问题:

需要帮助调试电子邮件代码

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

extend AsyncTask {

但是,GMailSender.java 已经将其定义为:

public class GMailSender extends javax.mail.Authenticator

有人可以帮助我吗?谢谢!

笔记:

请不要像白痴那样 -1编辑了这个问题并发布了使用 JavaMail API 在 Android 中发送电子邮件中给出的确切答案,而不使用默认/内置应用程序。由于无法再在 Android 应用程序的主线程上运行网络操作,我无法使用该精确编码。我正在寻找一种使用 AsyncTask 以便在后台运行操作的方法。我不知道该怎么做

extend AsyncTask {

不碰

public class GMailSender extends javax.mail.Authenticator
4

2 回答 2

8

AsyncTask文档页面上有一个很好的例子。

将您的GMailSender对象传递给AsyncTask,并GMailSender#sendMaildoInBackground.

那是,

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();

}
于 2013-01-17T08:11:38.233 回答
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();

}

谢谢“dokkaebi”

于 2015-01-08T04:08:20.787 回答