我的 mailto 链接中的换行符在 Android 手机上已损坏

newlines in my mailto link are broken on Android phones

本文关键字:Android 手机 已损坏 换行符 mailto 链接 我的      更新时间:2023-09-26

我有一个正在尝试针对移动设备进行优化的Web应用程序,但我的简单mailto功能无法在我的Android手机上的默认邮件客户端上运行。 它适用于gmail客户端,但不适用于与Exchange电子邮件集成的本机客户端。(它似乎也适用于iphone fwiw。 本机客户端中发生的情况是,回车后的所有内容都被切断。 所以说我有如下内容:

    sendLinkByEmail: function (subject, message, url)
    {
        var parsedMessage = encodeURIComponent("Isn't this cool?'n I am sending you an email!");
        var emailLink = "mailto:?Subject=" + encodeURIComponent(subject) + "&body=" + parsedMessage;
        window.location = emailLink;
        return false;
    }

如果我选择使用 Gmail 应用打开,我会看到我期望的内容:

这不是很酷吗?

我给你发了一封电子邮件!

但是如果我使用邮件应用程序打开它,我只会得到

这不是很酷吗?

仅此而已。

如果我使用 %0A 或 %0D%

0A 而不是 ',或者如果我不使用 encodeURIComponent (例如,消息只是字面意思是"Foo%0D%0ABar"——我只是得到 Foo(,也会发生同样的事情。

我不知道那个愚蠢的邮件客户端在做什么! 有人知道吗?

非常感谢!!


刚刚意识到我的问题更大 - 愚蠢的邮件客户端甚至在编码后也会截断任何内容&(%26(所以我也无法嵌入URL,这就是函数的重点。

是否有任何替代 mailto 的方法可以从 Web 应用程序打开邮件客户端?

根据我的经验,您在 mailto: 链接中使用 ' 的成功将因邮件客户端而异。我发现最有效的方法是使用 %0d 代替 ',但即便如此,并非所有客户端都会支持它。

如果格式对你很重要,那么mailto:链接就不是你想要的。