我最近问了一个关于以下代码的问题:
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
答案 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;