传递给系统调用的数据区域太小了“

时间:2012-11-02 07:22:21

标签: javascript email outlook

outlook电子邮件是否有特定的字符串大小。我有以下代码给我一个错误

  

传递给系统调用的数据区域太小

然而,只有当我的邮件正文大于正常

时才会出现这种情况
document.location.href = "mailto:" + emailAddress + "?subject=my msgs Relief&body=" + escape(message);

如果我删除代码,那么它不会显示此消息。因此,它与电子邮件正文中的字符数相关联。请建议。

2 个答案:

答案 0 :(得分:6)

我最近遇到了这个确切的问题。问题是不同的浏览器(和不同的电子邮件客户端)对使用邮件链接在它们之间传递的数据量有限制。

例如,Internet Explorer中的最大URL长度为2,083个字符(MS KB Link)。如果链接的总长度(包括主题,地址和正文)超出此范围,您将收到此错误。

为了解决这个问题(因为我们必须支持IE),我在生成链接后使用了这个kludge:

var mailto_link = 'mailto:'+addresses+'?subject='+subject+'&body='+body_message;
win = window.open(mailto_link.substr(0,2000),'emailWindow');

这并不完美,但在极少数情况下,用户会尝试生成一封巨大的通知电子邮件,他们会在事件发生时被礼貌地警告,提醒,并在事件发生后得到通知。

答案 1 :(得分:4)

它可能会失败,因为某些电子邮件客户端不接受空格作为href的一部分,因此您需要URI编码(转义)它们,因此它们变为%20。

试试这个:

document.location.href = "mailto:" + emailAddress + "?subject=my%20msgs%20Relief&body=" + escape(message);