有没有办法确定电子邮件是不是到达目的地?
Posted
技术标签:
【中文标题】有没有办法确定电子邮件是不是到达目的地?【英文标题】:Is there a way to determine whether an e-mail reaches its destination?有没有办法确定电子邮件是否到达目的地? 【发布时间】:2010-09-16 03:49:08 【问题描述】:我有一个 php 脚本,可以发送需要到达目的地的重要电子邮件。我知道如何检查电子邮件是否发送成功,唯一的问题是知道它是否真的到达了收件人。
有什么建议吗?如果没有办法知道,你会如何处理这种情况?
【问题讨论】:
我很想回答:在电子邮件中添加一个链接,上面写着“如果您没有收到此邮件,请单击此处。” 那太棒了。我可以报告所有电子邮件的 100% 成功率! :) 【参考方案1】:如果您制作基于 html 的电子邮件,您可以在其中包含包含 URL 的图像,其中包含收件人独有的信息。您可以构建您的应用程序,以便这些 URL 触发一些代码以在返回所需的图像数据之前将该特定电子邮件标记为已读。
为了完全有效,图像必须构成电子邮件的关键部分,以便收件人必须让他们的电子邮件客户端抓取图像。您还可以使电子邮件的纯文本部分仅包含一个 URL 以检索完整的邮件,再次允许您跟踪收据。
您采取这些想法的程度取决于为什么您需要知道它已被阅读,以及您希望在多大程度上用他们无法剪切'n'粘贴的电子邮件潜在地惹恼收件人,在移动设备上轻松阅读,使用屏幕阅读器收听等等......
【讨论】:
大多数电子邮件客户端会自动阻止图像等待用户批准 这就是为什么我说你必须让图像成为有效信息的关键部分。 这将依赖于收件人将其打开为 HTML。例如,我从不对任何电子邮件这样做,如果电子邮件依赖于我打开图像位置,我将看不到它。因此,实际上这会导致收件人实际上没有收到内容。糟糕的设计恕我直言。【参考方案2】:交货状态通知是通常的方式:http://www.sendmail.org/~ca/email/dsn.html
除非您使用该 microsoft email 并且阅读器没有禁用已读回执,否则您无法判断是否已阅读电子邮件。
编辑:我还没有进展到 HTML 电子邮件,所以我从来没有考虑过阅读通知。
【讨论】:
使用 HTML 电子邮件进行通知是一种糟糕的 hack,很容易被破坏。你是对的,从不考虑它。【参考方案3】:没有办法确定。即使远程服务器接受了邮件,也不能保证它不会被垃圾邮件过滤器或其他方式过滤。
【讨论】:
此时我很想知道远程服务器是否接受了该消息。所以我很高兴能够知道这是否发生了。【参考方案4】:所有跟踪链接和网络错误都假定人们实际上打开了电子邮件并启用了远程图像,或者单击了链接。这都是有缺陷的。
为了确保是否收到电子邮件但未返回,我会执行以下操作:
-
添加
Errors-To
标头(设置为例如bounce@domain.com)
添加Return-Path
标头(设置为例如bounce@domain.com)
拿起邮箱 (bounce@domain.com) 并解析邮件
这使您可以检查电子邮件何时返回,根据邮件内容您可能可以找出退回/返回的电子邮件。
【讨论】:
【参考方案5】:很遗憾,没有 100% 的方法可以确定邮件是否已发送到用户的收件箱。即使服务器接受了消息,它也可能被垃圾邮件过滤器拦截或异步退回。
很多人都提到了网络错误跟踪风格技术。这些对营销人员很有效:他们可以根据样本量做出假设。它们需要 HTML 电子邮件,并且用户在 HTML 中加载图像。这在某些情况下会自动发生,但很多时候人们必须专门点击“下载图片”按钮。
另一种方法是使用Goodmail。他们的部分服务是跟踪哪些消息实际被传递和打开。当然,这需要花钱,而且并非所有邮件提供商都受支持。同样,它主要是一种营销工具。
您还可以在链接中隐藏跟踪脚本。例如,您创建一个如下所示的 URL:
http://trackingserver/track/$messageid/http://real.url/goes/here
track
脚本随后在数据库中记录“点击”并将客户端重定向到http://real.url/goes/here
。然后,您需要有一个令人信服的理由来每次点击该 URL。
【讨论】:
【参考方案6】:你为什么想知道有人读过邮件?
从法律上讲,您可能想出的任何方法都不会在法庭上成立(假设您想确保某人已经阅读了重要文件),因为您无法证明阅读者是收件人。
出于安全考虑,您的邮件将被任何像样的垃圾邮件过滤器标记为垃圾邮件并在任何人看到它之前将其删除,因为在邮件中添加奇怪的链接或网络错误或图像正是垃圾邮件发送者所做的。如果你想卖东西,这是确保你不会卖东西的万无一失的方法。
更新:如果您需要确保人们已经阅读了某些内容,我建议发送邮件时附上链接或指向他们应该阅读的文档的指针。不要在链接中添加网络错误或个性化 ID。在文件中,告诉他们签署文件并返回一份签名副本作为他们已阅读文件的证明。
【讨论】:
【参考方案7】:我猜以上所有内容:HTML 中的图像,如果他们点击某些东西,则跟踪链接。 ReturnPath / Goodmail 等第三方服务可以提供帮助。
最好的建议是确保您发送的列表是干净的、IP 地址具有良好的声誉、反向 dns/spf 记录、对活动进行良好的退订和退回处理、对内容进行垃圾邮件检查,并让收件人添加您到他们的通讯录。
这会让你有更好的交货机会...
Sundeep.//
【讨论】:
【参考方案8】:试试这个:
使用 HTML 编写电子邮件(使用 PHP 并没有那么棘手)。
在该电子邮件中,包含一张图片(可能只是一个漂亮的徽标或其他东西)。
这张图片将是一张特殊的图片......它的 src 将是,比如说,myserver.com/images/logo.gif?recipient@email.com
。这个 src 需要为每个发送电子邮件的人动态生成。然后,如果收件人打开电子邮件,电子邮件客户端将向您的服务器询问 logo.gif?recipient@email.com
因此,如果您的服务器收到对该图像的请求,您就会知道收件人@email.com 收到了您的消息。
您可以为 URL 末尾的标签创建一种特殊格式,这样它不仅可以告诉它是谁,还可以告诉他们正在回复哪封电子邮件。
请记住,这是垃圾邮件发送者用来判断电子邮件地址是否处于活动状态的方法。因此,某些软件可能会询问用户他们是否认为您是垃圾邮件!此外,一些用户将没有图像支持(或将关闭此支持)。
祝你好运!
【讨论】:
【参考方案9】:如果是内部邮件,请发送电子邮件,但不要将邮件内容放入电子邮件中。提供指向网站的链接,但在 url 中提供标识符,以便您可以将页面视图与电子邮件联系起来。
如果是外部的,你仍然可以这样做,只要另一端的人合作。
您还可以在目标邮件系统上设置一个普通帐户并进行检查。如果您通过该帐户收到电子邮件,则系统可能未设置为将其过滤掉。
您也可以要求接收系统的管理员在收到良好电子邮件时给您回信(您知道,就是卷曲您的确认网页的脚本),但这需要大量的合作。虽然在那个时候,通过 Web 服务传递消息可能会更容易。
【讨论】:
【参考方案10】:如果我没记错的话,只要你发送成功,你就可以放心,它至少已经被接收邮件服务器接受了。
【讨论】:
发送成功是指返回码吗? en.wikipedia.org/wiki/… 有一个例子说明当你发送电子邮件时会发生什么。【参考方案11】:web bug 可能会给你一些类似已读回执的东西,如果这就是你的要求的话。
【讨论】:
【参考方案12】:SMTP 协议是异步的,因此唯一有保证的反馈可以由用户邮件客户端返回。如果投递出现问题,您会将退回的电子邮件退回到信封发件人中定义的地址(邮件标头返回路径)这些退回的时间是不可预测和未定义的。 迄今为止,在 HTML 电子邮件正文中跟踪像素是报告用户实际打开电子邮件的最佳方式。
【讨论】:
以上是关于有没有办法确定电子邮件是不是到达目的地?的主要内容,如果未能解决你的问题,请参考以下文章
SparkPost融资1.8亿美元用于数据驱动的电子邮件投递管理
有没有办法更改 github 上已提交内容的电子邮件 ID?