所以我有这个隐藏的形式,这个'我喜欢这个'按钮,我想插入我寄出的电子邮件中。
<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请求就会发送到我的服务器,让我知道谁喜欢我的电子邮件。但是,单击该按钮还会打开指向用户到我的站点的链接(新的浏览器窗口/选项卡等)。如何阻止单击按钮打开链接,只将表单中的数据发送到我的服务器?
我希望类似按钮不引人注目。我不希望通过打开新标签来扰乱电子邮件收件人。我知道它可能与javascript,但是,我很确定大多数电子邮件服务提供商在电子邮件中逃避javascript,因为他们应该。
答案 0 :(得分: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>
唯一标识符可以是电子邮件(无论如何都是您在表单中执行的操作),或者是与用户链接的某种令牌。在任何一种情况下,您都可以在页面上包含一些文字,以感谢用户的反馈:
谢谢!我们很高兴你喜欢这封电子邮件。您可以关闭此窗口,或 click here去主要地方 页。
这是跨浏览器,跨操作系统,适用于任何支持HTML的电子邮件客户端。对于纯文本客户端,他们可以将URL复制粘贴到他们的浏览器中,而不会看到明显的标记混乱。您的用户将非常感谢您的透明度,您表示的感谢,以及您没有向他们发送电子邮件,这些电子邮件会引发其电子邮件客户端的安全警告。
答案 1 :(得分:1)
您的解决方案无效,因为大多数(如果不是全部)电子邮件客户端将完全删除您电子邮件中的任何脚本标记 - 因此您的所有JavaScript都将消失。此外,您的表单帖子绝对不会起作用。
这可以做到的唯一方法(以及所有公司采用的方法)是在您的电子邮件中添加一个链接,当点击该链接时,会将用户带到您网站上的页面:
<a href="http://YOUR-SITE.com/like">I Like This</a>
然后,服务器将能够将请求记录到此页面,因此您可以执行所需的任何逻辑。