如果应用允许,发送HTML邮件

时间:2013-04-04 15:02:40

标签: android email sendmail html-email

我想从我的应用程序发送一封html邮件。 我知道并非所有邮件客户端都允许使用html标签。 但我在API(http://developer.android.com/reference/android/content/Intent.html#EXTRA_HTML_TEXT)中找到了常量Intent.EXTRA_HTML_TEXT。

我的代码看起来像这样,但它始终只显示文本,而不是html格式的文本,无论我使用的是哪个邮件客户端:

 Intent intent = new Intent(Intent.ACTION_SEND);
 intent.putExtra(Intent.EXTRA_SUBJECT, subject);
 intent.putExtra(Intent.EXTRA_TEXT, "Hello World");
 intent.putExtra(Intent.EXTRA_HTML_TEXT, "<html><body><h1>Hello World</h1></body><html>");

 intent.setType("text/html"); // intent.setType("plain/text");

 startActivity(Intent.createChooser(intent,  "Choose Email Client:"));

那么错误在哪里?

1 个答案:

答案 0 :(得分:4)

对不起,这不是一个肯定的答案,因为它似乎不起作用,至少不是一种真正普遍和可靠的方式。一些邮寄者对此表示满意:

String body = "<html>something</html>";
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body));

请注意,您不需要新的EXTRA_HTML_TEXT,它也适用于较旧的String body = "<html>something</html>"; Spanned html = Html.fromHtml(body); String stripped = html.toString(); 。如果这涵盖了您所需要的一切,那么您可能没问题。但是,如果您还想要解决许多其他可能的意图接收器,如Facebook,Skype甚至像Drive或Keep这样的应用程序,遗憾的是,我找不到完美的解决方案,但我非常希望被证明是错误的。

基本上,我们有三种不同的格式:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
  intent.putExtra(Intent.EXTRA_HTML_TEXT, ???);
intent.putExtra(Intent.EXTRA_TEXT, ???);

和两个可能的收件人:

{{1}}

我尝试了所有可能的组合,但在其中任何一种,都会有一些众所周知且广泛使用的应用程序,不想玩得很好。我们要么嵌入HTML标签,要么没有格式化,甚至根本没有文字......