我使用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
答案 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已更改的注册表项。