0

所以我有这个隐藏的表格和这个“我喜欢这个”按钮,我想将它们插入到我发送的电子邮件中。

<form method="post" action="http://someWebsite.com/he_likes_it">
    <input type="hidden" name="who_liked" value="heLikedIt@something.com" />
    <input type="submit" value="I Like This" />
</form>

我可以将按钮插入到我的电子邮件中。因此,每当电子邮件收件人单击其电子邮件中的按钮时,带有表单数据的 POST 请求就会发送到我的服务器,让我知道谁喜欢我的电子邮件。但是,单击该按钮也会打开链接(新的浏览器窗口/选项卡等),将用户引导至我的网站。如何防止单击按钮打开链接,而仅将表单中的数据发送到我的服务器?

我希望like按钮不显眼。我不希望通过打开一个新标签来打扰电子邮件收件人。我知道使用 javascript 是可能的,但是,我很确定大多数电子邮件服务提供商都应该在电子邮件中转义 javascript。

4

2 回答 2

2

对于初学者来说,完全忘记javascript——它不会发生。没有电子邮件客户端会允许 JS 通过,这太冒险了。

至于表单方法,暂且不说邮件客户端是否允许通过,如果页面立即自行关闭(见下面的片段),一些操作系统、浏览器和邮件客户端可能会配合,将焦点“交给”邮件客户端(这就是您所追求的——用户被“带回原来的位置”)。但是,无法保证客户端操作系统、浏览器和电子邮件客户端将如何反应。

此外,有些人使用非 HTML 客户端,而有些客户端(如 Outlook)可能会完全禁止这样做。从安全的角度来看,这具有被利用的潜力,因此即使所做的不是利用,整个实践也具有这种潜力,因此可能会被阻止。

非 HTML 电子邮件客户端可能会将您的 HTML 转储为文本,因此在这种情况下看起来会很糟糕。

要立即关闭窗口,您可以尝试:

<script type="text/javascript">window.close();</script>

因此,页面http://someWebsite.com/he_likes_it仅包含此作为输出(在完成任何需要完成的服务器端工作之后)。根据浏览器、其他选项卡是否打开以及其他一些因素,窗口可能会毫无问题地关闭。可能是有效的词!然后用户可能会被带回电子邮件客户端。没有办法编写脚本,也没有办法控制它。

作为替代方案,我建议您做一些不太容易出现问题的事情,以及电子邮件客户端、操作系统和浏览器的变幻莫测……这远不那么“偷偷摸摸”——不要向用户隐瞒您正在做的事情。而不是表格,只需在您的电子邮件中包含一个链接:

Like this email? Let us know: <a href="http://www.mysiteurl.com/he_liked_it/UNIQUE_IDENTIFIER">http://www.mysiteurl.com/he_liked_it/UNIQUE_IDENTIFIER</a>

唯一标识符可以是电子邮件(无论如何,这就是您在表单中所做的事情),或者是链接到用户的某种令牌。无论哪种情况,您都可以在页面上添加一些文本以感谢用户的反馈:

谢谢!我们很高兴您喜欢这封电子邮件。您可以关闭此窗口,或 单击此处转到主页。

这是跨浏览器、跨操作系统的,适用于任何支持 HTML 的电子邮件客户端。对于纯文本客户端,他们将能够将 URL 复制粘贴到他们的浏览器中,而不会看到大量的标记混乱。您的用户会欣赏您的透明度、您表达的感激之情,并且您不会向他们发送引发其电子邮件客户端安全警告的电子邮件。

于 2012-06-28T22:08:14.960 回答
1

您的解决方案将不起作用,因为大多数(如果不是全部)电子邮件客户端将完全删除您电子邮件中的任何脚本标签 - 因此您的所有 javascript 都将消失。此外,您的表单帖子肯定不起作用。

可以做到这一点的唯一方法(以及所有公司采用的方法)是在您的电子邮件中添加一个链接,单击该链接时,会将用户带到您网站上的页面:

<a href="http://YOUR-SITE.com/like">I Like This</a>

当然,服务器随后将能够记录对该页面的请求,因此您可以执行您需要的任何逻辑。

于 2012-06-28T22:10:10.727 回答