使用mailto时如何解决正文中不显示换行符的问题?

Posted

技术标签:

【中文标题】使用mailto时如何解决正文中不显示换行符的问题?【英文标题】:How to fix not showing line break in body while using mailto? 【发布时间】:2020-07-25 22:02:38 【问题描述】:

我的代码:

<a href="mailto:anything@any.com?subject=This%20is%20Subject&body=Hello%0D%0A%0D%0Aworld..">
   click here to mail me
</a>

预期输出:

我现在得到的输出:

我尝试使用%0D%0A,但它不起作用。我还尝试了here 的一些 java 脚本方法,但这些方法似乎不起作用。

我用来检查 mailto 的应用程序:输出是我 android 设备上的默认 Gmail 应用程序。

编辑[解决方案]

只需使用&lt;br&gt; 标签就可以很好地与第三方应用程序(如 gmail for android)配合使用。

【问题讨论】:

【参考方案1】:

%0D%0A 是进位返回和换行字符,使用 %20 作为空格,就像你在主题中所做的那样:

<a href="mailto:anything@any.com?subject=This%20is%20Subject&body=Hello%20world..">
   click here to mail me
</a>

如果您想要换行符,请使用 %0D%0A,如下所示:

<a href="mailto:anything@any.com?subject=This%20is%20Subject&body=Hello%0D%0Aworld..">
   click here to mail me
</a>

如果您检查十六进制值,您可以查看 ascii table 中的这些值的含义,您会看到 A、D、E 和 20 等于什么。

【讨论】:

我需要一个换行符,就像你在第一行所说的那样,我需要返回......不是空格。我知道 %20 用于空间,发现 %0D%0A 用于换行。但是,当我使用它时,它不起作用。请仔细阅读我的问题或expexted输出,或者至少我的标题本身说我需要换行。 ? 请查看我的帖子最后报价,我在 gmail 应用 Android 中尝试过。你是否也尝试过同样的工作?我点击网站href mailto:它重定向到移动设备上的gmail应用程序并且没有换行符,因为我在预期的输出中显示它是android的gmail应用程序。 (大多数用户曾经从我的网站向我发送邮件),我认为你在 pc 中签入,是的,在 pc 浏览器中对我有用。 你说得对,在电脑上测试更快。仅在 android 中的 gmail 中失败。我发现有几篇帖子要求相同的***.com/questions/40276780/… 和***.com/questions/60065386/… 有同样的问题但没有任何答案,%0D%0A 应该是这样,但这似乎是 Android 中的一个 gmail 错误,因为它适用于 ios gmail。 非常感谢您分享这些帖子链接?它有效。我在这些帖子中看到一条评论说只需使用 &lt;br&gt; 即可与 gmail 等第三方应用程序一起使用。我试过了。 很高兴您能解决您的问题。您可以将自己的答案添加到您的问题中,几天后您就可以将其标记为正确,这也可能对其他人有所帮助。【参考方案2】:

2020 年 9 月 9 日更新 这在最近的 Gmail 版本中再次更改 - 例如版本 2020.08.09.327326543.Release - \r\n 使用 mailto: 时的换行符现在可以再次工作,而 &lt;br&gt; 不能。

我只能假设这是一个回归错误,而不是现在已修复的 Gmail 应用中的故意更改。

原答案:

我最近在我的 Android 应用程序中发现了一个问题,当使用 mailto: 打开 Gmail 作为默认电子邮件客户端时,这些应用程序一直使用编码的 \r\n 换行。 虽然这之前工作正常,但现在换行符显示为空格。

在进行一些测试后,Gmail 应用的行为似乎在最近的更新中发生了变化。

我创建了一个test page,其中包含两个链接,一个使用编码的\r\n,一个使用&lt;br&gt; 作为正文中的换行符:

mailto:anything@any.com?body=Hello%0D%0Aworld
mailto:anything@any.com?body=Hello<br>world

在运行 Android 10/API 29 且 Gmail 应用版本为 2019.05.12.250526289.release 的 Android 模拟器中:

\r\n 链接正常工作:

&lt;br&gt; 链接没有:

在运行 Android 11 Beta/API 30 且 Gmail 应用版本为 2020.04.29.309137422.release 的 Android 模拟器中:

&lt;br&gt; 链接正常工作:

\r\n 链接没有:

【讨论】:

对我也一样【参考方案3】:

只需使用&lt;br&gt; 标签,就可以很好地与第三方应用程序(如 gmail for android)配合使用。

固定代码,

<a href="mailto:anything@any.com?subject=This%20is%20Subject&body=Hello<br><br>world..">
   click here to mail me
</a>

【讨论】:

以上是关于使用mailto时如何解决正文中不显示换行符的问题?的主要内容,如果未能解决你的问题,请参考以下文章

在邮件正文中插入换行符

Blazor 中带有主题和正文的 Mailto

mailto 链接在 chrome 扩展弹出窗口中不起作用

mailto链接多个正文行

角度:段落标签中不打印换行符

带有 HTML 正文的 mailto 链接