当使用Intent时,邮件正文不显示

6
当我尝试使用INTENT.ACTION_SEND或ACTION.SENDTO发送电子邮件意图时,无论我是否使用原始的Sony 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"));
    }
4个回答

12

使用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);

希望这能有所帮助。


好的,这有助于正文,但使用它后我遇到了一个新问题:收件人不见了。如何解决? - neominik
奇怪。我用Gmail试过了,我确实看到了收件人。你是从哪个应用程序尝试发送电子邮件的? - Aswin Rajendiran
这对我也起作用:我忘记使用String-Array来处理EXTRA_EMAIL了。使用单个String是不起作用的。 - neominik
对于现在查看此内容的人来说,对于 API >= 15,这可能不起作用。因此,请尝试访问:https://dev59.com/4m445IYBdhLWcg3wZJYn - JFreeman

3
我在Gmail中使用body属性,在其他电子邮件中使用EXTRA_TEXT。 我已经测试了不同的电子邮件应用程序,如三星电子邮件、一加电子邮件和LG电子邮件,它们似乎都支持EXTRA_TEXT,但是Gmail支持“body”属性。
 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..."))
}

}


0

首先创建一个选择器。重要的是,在“mailto:”后面留空。

val selectorIntent = Intent(Intent.ACTION_SENDTO).apply {
    data = Uri.parse("mailto:")
}

然后是电子邮件意图本身:

val emailIntent = Intent(Intent.ACTION_SEND).apply {
    putExtra(Intent.EXTRA_EMAIL, arrayOf("email@email.com"))
    putExtra(Intent.EXTRA_SUBJECT, "This is a subject")
    putExtra(Intent.EXTRA_TEXT, "Body text")

    selector = selectorIntent
}

打开电子邮件应用程序:

if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
}

(解决方案在Kotlin中)


0
尝试添加消息类型。
...
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, myMessage);
...

我真的以为我会有那个功能。但是即使我添加了那行代码,电子邮件应用程序中也没有显示。 - neominik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接