发送邮件:Intent.EXTRA_EMAIL不起作用

时间:2017-02-27 17:07:47

标签: email android-intent

我没有收到任何错误,但邮件将不会显示!它保持空白

public void Send_Mail(View view) {
        String txt_context = "My comment about the App : \n The App is good but does not support v3";
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setData(Uri.parse("mailto:"));
        intent.setType("message/rfc822"); // 
        intent.putExtra(Intent.EXTRA_EMAIL,"receiver@gmail.com"); // **this will not displayed** """
        intent.putExtra(Intent.EXTRA_SUBJECT,"Comment about the APP");
        intent.putExtra(Intent.EXTRA_TEXT,txt_context);
        startActivity(intent);

4 个答案:

答案 0 :(得分:2)

这是您通过意图正确发送电子邮件的方式。如果不是,您将需要URI参数才能让Gmail收到您的电子邮件。

Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:" + Uri.encode("email@gmail.com") + 
          "?subject=" + Uri.encode("the subject") + 
          "&body=" + Uri.encode("the body of the message");
Uri uri = Uri.parse(uriText);

send.setData(uri);
startActivity(Intent.createChooser(send, "Send mail..."));

答案 1 :(得分:2)

以您自己的方式执行此操作的缺点是,它会在检索发送邮件的地址时出现gmail问题,因此许多应用程序都支持message/rfc822,因此您的用户可能会被淹没在不同的客户端中。我建议你使用

Intent sendMail = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:" + Uri.encode("example@gmail.com") + 
          "?subject=" + Uri.encode("subject") + 
          "&body=" + Uri.encode("body);
Uri uri = Uri.parse(uriText);

sendMail.setData(uri);
startActivity(Intent.createChooser(sendMail, "Choose a client"));

因为这比使用intent.setType("message/rfc822");指定更具体,并解决了gmail的问题。祝你好运。

答案 2 :(得分:1)

我知道这篇文章很老但我遇到了同样的问题,我找到了解决方案(in the official documentation):

如上所述,Intent.EXTRA_EMAIL是:

  

一个String [],包含应该传递给的电子邮件地址。

所以要解决您的问题,而不是:

intent.putExtra(Intent.EXTRA_EMAIL,"receiver@gmail.com");

做的:

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"receiver@gmail.com"});

答案 3 :(得分:0)

对于科特林 emial 必须是一个 arrayOf,而不仅仅是一个字符串。

intent.putExtra(Intent.EXTRA_EMAIL, arrayOf("receiber@gmail.com"))