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

owe*_*owe 9 email android sendmail html-email

我想从我的应用程序发送一封html邮件.我知道并非所有邮件客户端都允许使用html标签.但我在API中找到了常量的Intent.EXTRA_HTML_TEXT(http://developer.android.com/reference/android/content/Intent.html#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:"));
Run Code Online (Sandbox Code Playgroud)

那错误在哪里?

Gáb*_*bor 5

抱歉,这不是一个肯定的答案,因为它似乎不起作用,至少不是真正通用且可靠的方式。一些邮寄者对此感到满意:

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

请注意,您不需要 new EXTRA_HTML_TEXT,它也适用于旧的。如果这涵盖了您需要的所有内容,那么您可能没问题。但是,如果您还想解决许多其他可能的意图接收器,例如 Facebook、Skype 或什至 Drive 或 Keep 等应用程序,不幸的是,我找不到完美的解决方案,但我非常希望被证明是错误的。

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

String body = "<html>something</html>";
Spanned html = Html.fromHtml(body);
String stripped = html.toString();
Run Code Online (Sandbox Code Playgroud)

和两个可能的收件人:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
  intent.putExtra(Intent.EXTRA_HTML_TEXT, ???);
intent.putExtra(Intent.EXTRA_TEXT, ???);
Run Code Online (Sandbox Code Playgroud)

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