【问题标题】:Some character in the mailto's body is stopping the mail window to open....javascriptmailto 正文中的某些字符正在阻止邮件窗口打开....javascript
【发布时间】:2012-05-24 06:58:43
【问题描述】:

我正在尝试使用以下 javascript 打开邮件回复窗口:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+body;  

问题是正文变量中有一些字符(如引号、特殊字符等)会给出错误消息。如果我给它一个静态的简单正文字符串,则相同的代码可以工作。

firefox 错误类似于

错误:未捕获的异常:[异常...“失败”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS frame :: (url) :: send_mail :: line 49”数据:no]”

正文内容: “XXXXX”

找出原因伙计们......它不允许我发送超过 1209 个字符。将此作为新问题发布。

【问题讨论】:

  • 考虑在正文中发布您怀疑导致问题的内容。这将有助于为我们提供一些工作线索。谢谢。

标签: javascript


【解决方案1】:

如果您将字符串传递给查询字符串中的参数,并且该字符串可能包含在 url 中具有其他含义的字符,则需要使用以下命令对其进行转义:

escape(stringOfTextToEscape);

因此,您的 window.location 将如下所示:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+escape(body) 

这可确保将任何特殊字符转换为 unicode 转义序列,从而可以安全地传递到 URL。

更多信息,请查看FAQ on escape, encodeURI, and encodeURIComponent

【讨论】:

  • 我试过了,但它不起作用......通过这样的警报函数正确地警报了同一个主体变量:alert(to+'_____'+from+'_____'+subject+'____'+cc+ '_____'+正文);
  • 您可以尝试将问题缩小到有问题的字符,方法是将主体切成 1/4,一次测试一个,直到找到破坏它的部分,然后拆分它再次上升到四分之四并重复,直到你得到足够小的东西来发布你的问题。祝你好运!
  • 我已经添加了正文内容,你看一下。
【解决方案2】:

试试这个:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+escape(body); 

escape() 函数对特殊字符进行编码,但以下情况除外: * @ - _ + 。 /

所以escape("How are you? Come on!"); 会给你这样的结果:How%20are%20you%3F%20Come%20On%21

【讨论】:

  • 我试过了,但它不工作......通过这样的警报功能正确地提醒同一个主体变量:alert(to+'_____'+from+'_____'+subject+'____'+cc+ '_____'+正文);
  • 不工作..看起来身体中的空间正在制造问题...仍在寻找
  • 正文内容添加,看看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-02
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 2018-04-01
  • 1970-01-01
相关资源
最近更新 更多