5

当我尝试发送电子邮件意图时,无论我使用的是 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

4 回答 4

10

要发送带有正文的电子邮件,请使用 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);

希望这可以帮助。

于 2013-05-13T22:06:57.157 回答
3

我将正文属性用于 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..."))
}

}

于 2020-06-17T17:18:06.170 回答
0

尝试添加消息类型

...
emailIntent.setType("plain/text");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, myMessage);
...
于 2013-05-11T22:02:13.780 回答
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 中)

于 2022-01-12T11:46:31.953 回答