【问题标题】:sending html mail if app allows如果应用允许,发送 html 邮件
【发布时间】:2013-03-26 17:53:28
【问题描述】:

我想从我的应用程序中发送一封 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:"));

那么错在哪里?

【问题讨论】:

  • 不,它不是重复的。在这篇文章中,只有一个问题是如何在特定的邮件客户端(例如 gmail)中发布 html 标签。这对我来说很好。我需要一个替代解决方案:如果邮件客户端不支持 html 标签(例如 gmx),则采用意图“EXTRA_TEXT”,如果邮件客户端支持 html 标签(例如 gmail),则采用意图“EXTRA_HTML_TEXT”。那么我该如何解决这个问题呢?我的代码有什么问题?
  • 真的没有人尝试过吗?我很感激任何提示。谢谢

标签: android email sendmail html-email


【解决方案1】:

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

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

请注意,您不需要新的EXTRA_HTML_TEXT,它也可以与旧的EXTRA_HTML_TEXT 一起使用。如果这涵盖了您需要的所有内容,那么您可能会没事。但是,如果您还想解决许多其他可能的意图接收器,例如 Facebook、Skype 甚至是 Drive 或 Keep 等应用程序,很遗憾,我找不到完美的解决方案,但我非常希望被证明是错误的。

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

String body = "<html>something</html>";
Spanned html = Html.fromHtml(body);
String stripped = html.toString();

还有两个可能的收件人:

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

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

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 2012-11-25
    • 2011-03-07
    • 2022-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多