35

我找到了一种使用意图发送纯文本电子邮件的方法:

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain"); 
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new     
String[]{"example@mail.com"}); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Test");

但我需要发送 HTML 格式的文本。
尝试 setType("text/html") 不起作用。

4

6 回答 6

51

您可以在额外内容中传递Spanned文本。为确保意图仅解析为处理电子邮件的活动(例如 Gmail 和电子邮件应用程序),您可以使用ACTION_SENDTO以 mailto 方案开头的 Uri。如果您事先不知道收件人,这也将起作用:

final Intent shareIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
shareIntent.putExtra(
Intent.EXTRA_TEXT,
Html.fromHtml(new StringBuilder()
    .append("<p><b>Some Content</b></p>")
    .append("<small><p>More content</p></small>")
    .toString())
);
于 2010-04-30T15:34:23.003 回答
3

这对我的 HTML 非常有帮助,但是 ACTION_SENDTO 对我来说并不完全有效 - 我收到了“不支持操作”的消息。我在这里找到了一个变体:

http://www.coderanch.com/t/520651/Android/Mobile/no-application-perform-action-when

这是我将两者结合在一起的代码:

String mailId="yourmail@gmail.com";
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, 
                                Uri.fromParts("mailto",mailId, null)); 
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject text here"); 
// you can use simple text like this
// emailIntent.putExtra(android.content.Intent.EXTRA_TEXT,"Body text here"); 
// or get fancy with HTML like this
emailIntent.putExtra(
         Intent.EXTRA_TEXT,
         Html.fromHtml(new StringBuilder()
             .append("<p><b>Some Content</b></p>")
             .append("<a>http://www.google.com</a>")
             .append("<small><p>More content</p></small>")
             .toString())
         );
startActivity(Intent.createChooser(emailIntent, "Send email..."));
于 2011-11-09T16:51:55.323 回答
2

我还没有(还)开始 Android 开发,但是意图的文档说如果你使用 EXTRA_TEXT,MIME 类型应该是 text/plain。似乎如果您想查看 HTML,则必须改用 EXTRA_STREAM ...

于 2010-01-05T16:55:37.600 回答
2

一段时间以来一直试图通过 gmail 应用程序发送 html,因此决定对我的发现留下一些见解,以防其他人遇到类似问题。

似乎无论我做什么,我都无法让 html 中包含粗体文本。然后我尝试切换到 Outlook 客户端,令我惊讶的是它工作得很好。Html 标记也在其他较旧的设备上工作,但不适用于我的(galaxy s7 API 26),所以我想,gmail 应用程序似乎已经放弃了对来自意图的 html 语法的支持,或者现在你需要提供它以一些没有明确记录的非常具体的方式。

对我有用的最后一个 gmail 版本是 6.9.25 版...在 Nexus 5X API 25 模拟器(牛轧糖)上它从 7.5.21 版开始停止工作...在 Nexus 5x API 26 模拟器(奥利奥)上

于 2018-09-26T11:56:15.250 回答
-1

您必须为“EXTRA_HTML_TEXT”更改“EXTRA_TEXT”

https://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT

于 2017-01-21T12:38:53.537 回答
-3

尝试在文本区域中添加一些 html 怎么样?

emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "<strong>Test</strong>");
于 2010-01-05T16:52:56.223 回答