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

Is there a way to have a button in an email remotely send data?

本文关键字:按钮 程发送 数据 电子邮件 有没有      更新时间:2023-09-26

所以我有这个隐藏的表单和这个'我喜欢这个'按钮,我想插入到我发送的电子邮件中。

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

对于初学者来说,完全忘记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 复制粘贴到他们的浏览器中,而不会看到明显的标记混乱。您的用户会欣赏您的透明度、表达的感激之情,以及您不会向他们发送引发其电子邮件客户端安全警告的电子邮件。

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

完成

此操作的唯一方法(以及所有公司采用的方法)是在您的电子邮件中包含一个链接,单击该链接时,会将用户带到您网站上的页面:

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

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