Mailto正文文本未填写IE

时间:2011-06-21 12:45:22

标签: html internet-explorer outlook mailto

我使用mailto允许客户提交产品报价信息。我试图通过将mailto链接构造为字符串,并根据以下代码连接引用信息来自动填充报价到电子邮件正文中:

var quoteinfo = 'quote information here';
var link = '<a href="mailto:email?subject=subject&body=Please enter your contact information 
and message here: %0A%0A%0AQuote:%0A' + quoteinfo + '">email</a>';

但是,在使用IE时,单击链接时会生成电子邮件,但只显示明确添加的文本 - quoteinfo变量中没有存储任何内容。我已经验证最终链接确实包含所有引用信息 - 它只是没有出现在电子邮件中。由于电子邮件确实成功生成了部分文本,我不相信这是一个字符溢出问题(在任何情况下,即使在quoteinfo变量中只有30个字符,也会发生这种情况。

也许这是邮件客户端特有的问题?

最后一点:我很清楚有一种流行的方式用表格替换mailto - 由于其他原因,我不能在这里做,所以请不要通过建议切换到表单来回应。

我的链接如何显示的具体示例如下:

mailto:sales@optecinc.com?subject=Submission From Quote Creator &body=Please enter
your contact information and message here: %0A%0A%0AQuote:%0A#17350 - IFW 2-inch -
$829.00%0A

3 个答案:

答案 0 :(得分:11)

哈希符号(#)在URL中具有特殊含义(记住锚名称?例如http://example.com#TopOfPage)。将其替换为%23

请参阅W3's URL Encoding Reference

更好的是,JavaScript可以使用encodeURI()函数为您完成。

window.onload = function() {
  var eTo = encodeURI("sales@example.com");
  var eSubj = encodeURI("Submission From Quote Creator");
  var eBody = encodeURI("Please enter your contact information and message here: \n\n\nQuote:\n#17350  IFW 2-inch -$829.00\n");

  var email = "mailto:" + eTo + "?subject=" + eSubj + "&body=" + eBody;

  document.getElementById("sales").href = email;
}
<a href="" id="sales">email</a>

答案 1 :(得分:2)

在这些方面的某个地方,你得出了一个错误的结论。首先消除动态链接生成,然后使用静态HTML进行测试。如果这也不起作用,请发布不起作用的完全链接。也许你的引言中有无效字符,你不知道。它可能以撇号开始吗?

从上面的代码中,链接看起来像这样:

<html>
  <body>

    <a href="mailto:someone@somewhere.com?subject=subject&body=Please enter your contact information and message here: %0A%0A%0AQuote:%0ARaaaawr">email</a>

  </body>
</html>

这完全正常(测试IE9,Outlook2007)。

答案 2 :(得分:0)

除了将哈希值(#)编码为Fantabulum mentions之外,我还会检查他们使用的是哪个客户端。如果它是Outlook(根据您的标签选择推断),他们可能希望运行“检测并修复”(通常位于“帮助”菜单上)。

运行“检测并修复”已修复了内部网上类似链接的许多问题。通常问题是文件/设置损坏或其他一些程序升级到Outlook的结果 - 例如Windows更新还原了Outlook已更改的注册表项。