【问题标题】:Is there a way to have a button in an email remotely send data?有没有办法让电子邮件中的按钮远程发送数据?
【发布时间】:2012-06-28 21:54:33
【问题描述】:

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

<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。

【问题讨论】:

  • 您可以尝试在隐藏的 iframe 中打开链接,但我怀疑电子邮件客户端会让您这样做。所以如果你不能使用 Javascript,你可能会倒霉。
  • 不要这样做。您的收件人不会喜欢跟踪。此外,许多邮件客户端会删除/禁用脚本(通常还有外部内容)。最好的解决方案是添加"Please notify ...@.... to confirm that you've received this mail."

标签: javascript html forms email button


【解决方案1】:

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

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

此外,有些人使用非 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 复制粘贴到他们的浏览器中,而不会看到大量的标记混乱。您的用户会欣赏您的透明度和表达的感激之情,并且您不会向他们发送引发其电子邮件客户端安全警告的电子邮件。

【讨论】:

  • 感谢您的信息。简单的链接听起来同样可行。只是为了向感兴趣的人提供更多关于这个主题的背景知识,我们正在我的大学进行一项研究,看看是否有一种简单的方法让发送电子邮件的人接收关于他们发送给用户的内容的反馈。人们发送电子邮件,通常他们不知道收件人是否喜欢发送的内容。也许如果是个人,他们会回复;但是,假设一名记者将文章发送到邮件列表,也许他想知道有多少用户喜欢他/她写的内容。
【解决方案2】:

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

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

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

服务器当然可以记录对这个页面的请求,因此你可以做任何你需要的逻辑。

【讨论】:

    猜你喜欢
    • 2021-03-11
    • 2013-10-19
    • 2021-06-12
    • 1970-01-01
    • 2020-03-07
    • 2016-06-13
    • 2021-11-28
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多