我试图在Android中创建一个邮件发送应用程序。

如果我使用:

Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);

这将启动内置的Android应用程序;我试图发送邮件按钮点击直接不使用这个应用程序。


当前回答

这里有很多解决方案。然而,我认为我们必须改变GMail的配置,以允许从不太安全的设备访问。转到下面的链接并启用它。这对我很有用

https://myaccount.google.com/lesssecureapps?pli=1

其他回答

您可以使用JavaMail API来处理电子邮件任务。JavaMail API可以在JavaEE包中获得,它的jar可以下载。遗憾的是,它不能直接在Android应用程序中使用,因为它使用的AWT组件在Android中完全不兼容。

你可以在以下位置找到JavaMail的Android端口: http://code.google.com/p/javamail-android/

将jar添加到应用程序并使用SMTP方法

为了帮助那些获得网络主线程异常与SDK目标>9。这是使用droopie的代码上面,但将类似于任何工作。

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

StrictMode.setThreadPolicy(policy); 

android.os.NetworkOnMainThreadException

您可以如下所示使用AsyncTask

public void onClickMail(View view) {
    new SendEmailAsyncTask().execute();
}

class SendEmailAsyncTask extends AsyncTask <Void, Void, Boolean> {
    Mail m = new Mail("from@gmail.com", "my password");

    public SendEmailAsyncTask() {
        if (BuildConfig.DEBUG) Log.v(SendEmailAsyncTask.class.getName(), "SendEmailAsyncTask()");
        String[] toArr = { "to mail@gmail.com"};
        m.setTo(toArr);
        m.setFrom("from mail@gmail.com");
        m.setSubject("Email from Android");
        m.setBody("body.");
    }

    @Override
    protected Boolean doInBackground(Void... params) {
        if (BuildConfig.DEBUG) Log.v(SendEmailAsyncTask.class.getName(), "doInBackground()");
        try {
            m.send();
            return true;
        } catch (AuthenticationFailedException e) {
            Log.e(SendEmailAsyncTask.class.getName(), "Bad account details");
            e.printStackTrace();
            return false;
        } catch (MessagingException e) {
            Log.e(SendEmailAsyncTask.class.getName(), m.getTo(null) + "failed");
            e.printStackTrace();
            return false;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

我无法运行维纳亚克B的代码。最后我解决了这个问题如下:

1.使用这个

2.使用AsyncTask。

3.更改发件人gmail帐户的安全问题。(更改为“TURN ON”)

编辑:JavaMail 1.5.5声称支持Android,所以你不需要其他任何东西。

我已经将最新的JavaMail(1.5.4)移植到Android。它可以在Maven Central中获得,只需添加以下内容到build.gradle~~

compile 'eu.ocathain.com.sun.mail:javax.mail:1.5.4'

然后你就可以按照官方教程学习了。

源代码可以在这里找到:https://bitbucket.org/artbristol/javamail-forked-android

你考虑过使用Apache Commons Net吗?从3.3开始,只需要一个jar(您可以使用gradle或maven依赖它),就完成了:http://blog.dahanne.net/2013/06/17/sending-a-mail-in-java-and-android-with-apache-commons-net/