有没有办法让电子邮件中的按钮远程发送数据?

时间:2012-06-28 21:54:34

标签: javascript html forms email button

所以我有这个隐藏的形式,这个'我喜欢这个'按钮,我想插入我寄出的电子邮件中。

<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,因为他们应该。

2 个答案:

答案 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>

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