问题
I had recently asked a question regarding the following code:
Sending Email in Android using JavaMail API without using the default/built-in app
I had asked this in regards to a network error, as per a previous question:
Need Help Debugging Email Code
My question is, how would I implement an AsyncTask in order to successfully send an email with this Android code? Every tutorial that I see informs me that I should do
extend AsyncTask {
However, GMailSender.java already has this defined as:
public class GMailSender extends javax.mail.Authenticator
Would anyone be able to help me? Thanks!
NOTE:
Please don't be like the idiot who had -1ed this question and posted the exact answer as was given in Sending Email in Android using JavaMail API without using the default/built-in app. I am unable to use that exact coding, due to the fact that it is no longer possible to run a network operation on the main thread of an Android application. I am looking for a way to use AsyncTask in order to run the operation in the background. What I am unable to find out is how to do
extend AsyncTask {
without touching
public class GMailSender extends javax.mail.Authenticator
回答1:
There is a pretty good example right on the AsyncTask doc page.
Pass your GMailSender object in to an AsyncTask, and call GMailSender#sendMail during doInBackground.
That is,
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();
}
回答2:
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();
}
Thank you "dokkaebi"
来源:https://stackoverflow.com/questions/14374578/using-asynctask-to-send-android-email