【问题标题】:Send HTML email with Gmail 4.2.1使用 Gmail 4.2.1 发送 HTML 电子邮件
【发布时间】:2012-11-25 05:23:48
【问题描述】:

Gmail 4.2.1 似乎可能破坏了 HTML 格式的电子邮件。以下代码在 4.2.1 之前完美运行。从 Gmail 发送的电子邮件具有所需的嵌入式链接、粗体和带下划线的字词。不幸的是,在更新到 4.2.1 后,发送的电子邮件看起来好像所有的 HTML 格式都被删除了。我希望可能有人找到解决方法?

final Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
String[] toArr = new String[] { "someone@somewhere.com" };
intent.putExtra(Intent.EXTRA_EMAIL, toArr);
intent.putExtra(Intent.EXTRA_SUBJECT, "This is a subject");
intent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("Hello, here is some <b>bold text</b> some <u>underline text</u> and <a href=\"http://www.google.com\">a link</a>."));

有趣的事情(或者可能不是?)是这封电子邮件的撰写预览显示了所有粗体、下划线和链接的文本,正如人们所期望的那样。但是当它被发送时,收件人会收到一封去掉所有内容的电子邮件。

是的,我知道 this other question 已经关闭了这个。我认为它可能是过早关闭的,我希望这里的其他细节可能值得再看一下。

更多信息:经过进一步研究,这个问题远不止通过意图发送 HTML 电子邮件。如果使用具有某些格式(粗体、下划线、超链接等)的 GMail 网络应用程序创建草稿电子邮件,然后在您的 GMail Android 应用程序(v4.2.1)上打开该草稿电子邮件,您的所有格式都会显示被保留。但是,如果您随后使用 GMail Android 应用发送该电子邮件草稿,则在发送电子邮件之前,您的所有格式都将被删除。

【问题讨论】:

  • 我的应用程序中也有“发送电子邮件邀请功能”,它在以前的 Gmail 版本中运行良好(电子邮件正文已嵌入 Play Market URL),但在 Gmail 4.2.1 中不支持更多格式,只是简单文本发送。
  • 底线:这是 Gmail 中的一个错误,这不是一个真正的问题,是吗?
  • 很公平,我同意这不再是一个问题。如果谷歌的某个人至少能承认这个问题并表明他们是否打算修复它,那肯定会很好:(
  • 如何打开一个新的错误(这里:code.google.com/p/android/issues/list)或写评论/反馈?
  • 今天的 gmail 更新修复了这个问题

标签: android gmail


【解决方案1】:

这几乎可以肯定是 GMail 4.2.1 中的一个错误。

截至 2013 年 3 月 19 日,GMail 4.3 发布,似乎修复了该错误。

【讨论】:

    【解决方案2】:
    private void sendMail(String appName, String playStoreLink) {
        String msg = "<HTML><BODY>Hello,<br>Recently,I downloaded <b><font color=\"red\">"+appName+"</font></b>"+
    " from Play Store.I found this very challenging and a great game."+
                "<br>I would like to suggest you this game.<br><br><a href="+playStoreLink+">Download</a><br><br>"+
    "<br>Thank You</BODY></HTML>";
        String sub = "Get it now. It is there in Play Store";
        Intent email = new Intent(Intent.ACTION_SEND);
        email.setType("text/html");
        email.putExtra(Intent.EXTRA_SUBJECT, sub);
        email.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(msg));
        email.setType("message/rfc822");
        startActivity(Intent.createChooser(email, "Choose an Email client :"));
    }
    

    【讨论】:

    • 感谢您的回答,但不幸的是它没有帮助。我已经让代码正常工作了。这是 GMail 4.2.1 中引入的一个不幸的错误。
    • 设置类型两次是多余的。
    【解决方案3】:

    很抱歉你也遇到了这个问题,Scott。我在 12 月向 Google 提交了错误报告,但这似乎是一个黑洞。

    我需要嵌入超链接。我最好的解决方法是发送 text/plain 或 message/rfc822 电子邮件,其中 URL 为消息中的纯文本。奇怪的是,Gmail 识别出这一点并尝试将其包含在 标记中。使用这种方法,我可以获得收件人发送和点击的链接,但它看起来像废话。

    将 URL 格式化为使 Gmail 能够识别链接的整个文本并正确包含它也是一个挑战。

    【讨论】:

    • 是的,我也在为我的链接使用该解决方法。不过,正如你所说,它很丑。
    【解决方案4】:

    阅读您的问题后,我为这个问题浏览了很多,我发现它here。它实际上显示了格式化 Gmail 正文的方式和原因。您也可以结帐链接。

    希望对你有帮助。

    谢谢。

    【讨论】:

    • 感谢您的回答,但不幸的是它没有帮助。我已经让代码正常工作了。这是 GMail 4.2.1 中引入的一个不幸的错误。
    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 2017-04-28
    • 2018-01-26
    • 2020-07-12
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多