无法通过javamail android发送邮件

无法通过javamail android发送邮件,android,smtp,jakarta-mail,Android,Smtp,Jakarta Mail,我阅读了javamail android的指南和一些关于stackoverflow的帖子。例如。 我收到邮件发送成功。。。。但邮件不会到达收件人地址。我有以下输出: 02-11 09:53:38.988 2674-2674/com.example.mailapp W/System.err﹕ android.os.NetworkOnMainThreadException 02-11 09:53:38.988 2674-2674/com.example.mailapp W/System.

我阅读了javamail android的指南和一些关于stackoverflow的帖子。例如。 我收到邮件发送成功。。。。但邮件不会到达收件人地址。我有以下输出:

02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ android.os.NetworkOnMainThreadException
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at java.net.InetAddress.getByName(InetAddress.java:289)
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.URLName.getHostAddress(URLName.java:487)
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.URLName.hashCode(URLName.java:463)
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at java.util.Collections.secondaryHash(Collections.java:3405)
02-11 09:53:38.988    2674-2674/com.example.mailapp W/System.err﹕ at java.util.Hashtable.get(Hashtable.java:265)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.Session.getPasswordAuthentication(Session.java:823)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.Service.connect(Service.java:271)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.Service.connect(Service.java:169)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.Service.connect(Service.java:118)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.Transport.send0(Transport.java:188)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at javax.mail.Transport.send(Transport.java:118)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at com.example.mailapp.GMailSender.sendMail(GMailSender.java:64)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at com.example.mailapp.MyActivity$1.onClick(MyActivity.java:35)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at android.view.View.performClick(View.java:4438)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at android.view.View$PerformClick.run(View.java:18422)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5017)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-11 09:53:38.998    2674-2674/com.example.mailapp W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)

如何修复它或使用其他方式发送电子邮件?

您遇到此错误是因为您在主线程上执行网络操作,网络操作需要前所未有的时间,不应在主线程上调用。对其使用异步任务。异步任务将创建另一个线程来执行网络任务您也可以将其用于任何任务

添加代码以在doInBackground方法中执行操作,并使用以下方法调用它:

   new senmailAsync().execute();
例如:


完成教程

您还需要将参数传递到类中。您可以这样做:

public class MailSenderAsyncClass extends AsyncTask<String, Void, Void> {
    @Override
    protected Void doInBackground(String... params) {
        MailSenderClass sender = new MailSenderClass(Settings.Login, Settings.Pass);
        try {
            sender.sendMail(params[2],params[3],params[0],params[1],params[4]);
        } catch (Exception e) {
            Log.e("SendMail", e.getMessage(), e);
            e.printStackTrace();
        }

        return null;
    }
}

new MailSenderAsyncClass().execute(Settings.EmailFrom, Settings.EmailTo, "Subject", "text of mail", Settings.AnotherParam);
public class MailSenderAsyncClass extends AsyncTask<String, Void, Void> {
    @Override
    protected Void doInBackground(String... params) {
        MailSenderClass sender = new MailSenderClass(Settings.Login, Settings.Pass);
        try {
            sender.sendMail(params[2],params[3],params[0],params[1],params[4]);
        } catch (Exception e) {
            Log.e("SendMail", e.getMessage(), e);
            e.printStackTrace();
        }

        return null;
    }
}

new MailSenderAsyncClass().execute(Settings.EmailFrom, Settings.EmailTo, "Subject", "text of mail", Settings.AnotherParam);