使用Intent时不显示电子邮件正文

时间:2013-05-11 18:43:53

标签: android email android-intent

当我尝试发送电子邮件意图时,无论我使用的是INTENT.ACTION_SEND还是ACTION.SENDTO并使用股票索尼Xperia Active电子邮件客户端主题和收件人显示正常但身体是空的,除了标准客户贴出的评论。在我的三星Galaxy Note 2上,相同的代码就像魅力一样。

    if(mPrefs.getBoolean("alternative_email_client", false)){
        Intent send = new Intent(Intent.ACTION_SENDTO);
        String uriText = "mailto:" + Uri.encode(emailStrings[6]) + 
               "?subject=" + Uri.encode("The subject") + 
               "&body=" + Uri.encode(emailBody);
        Uri uri = Uri.parse(uriText);
        send.setData(uri);
        startActivity(Intent.createChooser(send, "Email verschicken"));
    } else {
        Intent send = new Intent(Intent.ACTION_SEND);
        send.putExtra(Intent.EXTRA_EMAIL, emailStrings[6]);
        send.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
        send.putExtra(Intent.EXTRA_TEXT, emailBody);
        startActivity(Intent.createChooser(send, "Email verschicken"));
    }

3 个答案:

答案 0 :(得分:7)

要发送包含正文的电子邮件,请使用message / rfc822。

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("message/rfc822");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "to1@example.com", "to2@example.com" });
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject of the email");
sendIntent.putExtra(Intent.EXTRA_TEXT, "Content of the email");
startActivity(sendIntent);

希望这有帮助。

答案 1 :(得分:1)

我将正文属性用于gmail,将EXTRA_TEXT用于其他电子邮件。我已经测试了不同的电子邮件应用程序,例如三星电子邮件,oneplus电子邮件和LG电子邮件,它们似乎支持EXTRA_TEXT,但是gmail支持“正文”属性。

 fun composeEmailMessage(context: Context,  subject: String, body: String, emails: Array<String> = arrayOf()) {
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:")
intent.putExtra(Intent.EXTRA_EMAIL, emails)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, body)//other emails app
intent.putExtra("body", body)//gmail
if (intent.resolveActivity(context.packageManager) != null) {
    context.startActivity(Intent.createChooser(intent, "Send email via..."))
}

}

答案 2 :(得分:0)

尝试添加消息类型

...
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, myMessage);
...