【问题标题】:Android - Send email with styled HTMLAndroid - 发送带有样式 HTML 的电子邮件
【发布时间】:2015-04-30 08:44:12
【问题描述】:

我收到一个服务器响应,它为我们提供了要通过 gmail 发送的 HTML。 这在应用程序的 iOS 版本上运行良好,但是文本在 Android 应用程序中只是以纯文本形式出现。

这是我们得到的响应的示例部分:

<html>
    <p style="color: #5987c6">My Shared Itinerary - John Smith.</p>
    <p>Hello.</p>
    <p>I want to share my Memmingen, DE trip itinerary with you.</p>
    <p>Shared using 
        <span style="color: #5987c6">Blah</span> by BlahBlah
    </p>
</html>

我已经尝试过以下操作:

final Intent shareIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"));
shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
shareIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(new StringBuilder().append(testBody).toString()));

其中 testBody 设置为我上面给出的示例。 我只是想知道是否可以立即使用来自服务器的响应来完成这项工作,还是在收到它后我必须进行一些重新格式化? 感谢您的帮助

【问题讨论】:

    标签: android html colors styles


    【解决方案1】:

    我收到一个服务器响应,它为我们提供了要通过 gmail 发送的 HTML。

    不,它将由用户选择的应用程序从设备上支持ACTION_SENDTO 的任何应用程序“发送”到mailto: Uri。或者,用户可以选择根本不发送电子邮件。

    然而文本在 Android 应用程序中只是以纯文本形式出现

    由用户选择处理您的请求以确定如何处理您的内容的应用程序。

    您可以通过以下方式最大限度地提高这项工作的几率:

    1. Using EXTRA_HTML_TEXTEXTRA_TEXT,其中 EXTRA_HTML_TEXT 具有原始 HTML

    2. 使用与what Html.fromHtml() supports 匹配的HTML,特别是不包括span 标记或style 属性。

    这些步骤都不能保证 Gmail 或任何其他应用程序一定会忠实地呈现和使用您的 HTML 格式的邮件,但它们应该会有所帮助。

    【讨论】:

    • 对不起,你说得对,我的意思是以gMail为例发送的。但是,任何邮件客户端都差不多。嗯,所以如果我希望邮件正确呈现,我将不得不更改服务器响应,并忽略不支持的任何内容
    • @goodgamerguy:您的 HTML 还需要尽可能“优雅地降级”,以应对所有 HTML 都被剥离的情况。我确信有些电子邮件客户端在某种“撰写”活动/片段中以EditText 形式呈现电子邮件散文时完全忽略 HTML 标记。对此您无能为力,因为您无法控制电子邮件客户端。您可以自己发送电子邮件,使用浮动的 Android JavaMail 端口或等效端口,但随后您开始遇到安全问题。或者,让服务器发送电子邮件。
    • 我不知道如何让它工作,我添加了:shareIntent.putExtra(Intent.EXTRA_HTML_TEXT, Html.fromHtml("text"));只是为了测试,但电子邮件的正文显示为空白。
    • @goodgamerguy:试试实际的 HTML,而不是 Html.fromHtml() 的输出。此外,虽然我希望 Gmail 支持EXTRA_HTML_TEXT,因为它已经有一段时间了,我不知道它是否支持,所以它可能会退回到EXTRA_TEXT(在那里你可以试试Html.fromHtml() 输出)。
    • GMail 似乎不支持 EXTRA_HTML_TEXT。我试着按照你说的做:shareIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("text"));但是,它只是在电子邮件中显示“文本”字样。没有颜色或任何东西。
    猜你喜欢
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2015-02-10
    • 2016-01-05
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多