【问题标题】:newlines in my mailto link are broken on Android phones我的 mailto 链接中的换行符在 Android 手机上已损坏
【发布时间】:2012-05-17 10:54:42
【问题描述】:

我有一个 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 而不是 \n,或者如果我不使用 encodeURIComponent(例如,消息只是字面上的“Foo%0D%0ABar”——我只是得到 Foo),也会发生同样的事情。

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

非常感谢!!!


刚刚意识到我的问题更加严重——即使是编码 & (%26) 之后,愚蠢的邮件客户端也会截断任何内容,因此我也无法嵌入 URL,这是该功能的重点。

除了 mailto 之外,还有其他方法可以从 Web 应用程序打开邮件客户端吗?

【问题讨论】:

标签: javascript android mailto


【解决方案1】:

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

如果格式对您很重要,mailto: 链接不是您想要的。

【讨论】:

  • 感谢您的回复(但事实令人失望!)如果格式没有出现在所有客户端上,我不介意,但将其切断消息的结尾是不可接受的。所以我必须删除所有客户端的格式,即使大多数都可以很好地处理换行符。该死。因此,如果 mailto 链接不是我想要的,我可以从 webapp(非本机)做什么来打开手机上的电子邮件客户端?
  • 不幸的是,如果您的目标是打开本地邮件客户端,那么 mailto: 链接是您唯一的选择。否则,您可以使用自己的邮件实现发送内容,但显然用户将无法访问他们的本地地址簿。可以说,这是实现的一个缺点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
相关资源
最近更新 更多