8

我有一个 PHP 脚本,可以发送需要到达目的地的重要电子邮件。我知道如何检查电子邮件是否发送成功,唯一的问题是知道它是否真的到达了收件人。

有什么建议么?如果没有办法知道,你会如何处理这种情况?

4

12 回答 12

9

如果您制作基于 HTML 的电子邮件,您可以在其中包含图像,其中包含带有收件人唯一信息的 URL。您可以构建您的应用程序,以便这些 URL 在返回所需的图像数据之前触发一些代码以将该特定电子邮件标记为已读。

为了完全有效,图像必须构成电子邮件的关键部分,因此收件人必须让他们的电子邮件客户端抓取图像。您还可以使电子邮件的纯文本部分仅包含一个 URL 以检索完整消息,从而再次允许您跟踪收据。

你对这些想法的理解程度取决于你为什么需要知道它已被阅读,以及你想在多大程度上用他们无法剪切的电子邮件潜在地惹恼收件人,在移动设备上轻松阅读,收听屏幕阅读器等...

于 2008-10-08T22:55:14.383 回答
8

传递状态通知是通常的方式:http ://www.sendmail.org/~ca/email/dsn.html

除非您使用该 microsoft email 并且阅读器没有禁用已读回执,否则您无法判断是否已阅读电子邮件。

编辑:我还没有进展到 HTML 电子邮件,所以我从来没有考虑过阅读通知。

于 2008-10-08T22:52:05.777 回答
4

没有办法确定。即使远程服务器接受该消息,也不能保证它不会被垃圾邮件过滤器或其他过滤器过滤。

于 2008-10-08T22:46:12.140 回答
4

所有跟踪链接和网络错误都假定人们实际上打开了电子邮件并启用了远程图像,或者单击了链接。这都是有缺陷的。

为确保是否收到电子邮件但未返回,我将执行以下操作:

  1. 添加Errors-To标头(设置为例如bounce@domain.com)
  2. 添加Return-Path标头(设置为例如bounce@domain.com)
  3. 拿起邮箱 (bounce@domain.com) 并解析邮件

这使您可以根据邮件内容检查电子邮件何时返回,您可能可以确定哪一封退回/返回。

于 2008-10-09T20:37:28.640 回答
3

不幸的是,没有 100% 的方法可以确定邮件是否已发送到用户的收件箱。即使服务器接受了消息,它也可能被垃圾邮件过滤器拦截或异步退回。

很多人都提到了网络错误跟踪风格技术。这些对营销人员很有效:他们可以根据样本量做出假设。它们需要 HTML 电子邮件,并且用户在 HTML 中加载图像。这在某些情况下会自动发生,但很多时候人们必须专门单击“下载图像”按钮。

另一种方法是使用Goodmail。他们的部分服务是跟踪哪些消息实际被传递和打开。当然,这需要花钱,而且并非所有邮件提供商都受支持。同样,它主要是一种营销工具。

您还可以在链接中隐藏跟踪脚本。例如,您创建一个如下所示的 URL:

http://trackingserver/track/$messageid/http://real.url/goes/here

然后该track脚本在数据库中记录一次“点击”并将客户端重定向到http://real.url/goes/here. 然后,您需要有一个令人信服的理由来每次单击该 URL。

于 2008-10-08T23:35:54.240 回答
2

为什么你想知道有人读过邮件?

从法律上讲,您可能想出的任何方法都不会在法庭上举行(假设您想确保某人已经阅读了重要文件),因为您无法证明读者是收件人。

安全方面,任何像样的垃圾邮件过滤器都会将您的邮件标记为垃圾邮件并在任何人看到之前将其删除,因为在邮件中添加奇怪的链接或网络错误或图像正是垃圾邮件发送者所做的。如果你想卖东西,这是确保你不会卖东西的万无一失的方法。

更新:如果您需要确保人们已经阅读过某些内容,我建议发送邮件时附上链接或指向他们应该阅读的文档的指针。不要在链接中添加网络错误或个性化 ID。在文件中,告诉他们签署文件并返回一份签署的副本作为他们已阅读文件的证明。

于 2008-11-18T15:20:45.203 回答
2

我猜以上所有内容:HTML 中的图像,如果他们点击某些东西,则跟踪链接。ReturnPath / Goodmail 等第三方服务可以提供帮助。

最好的建议是确保您发送的列表是干净的,IP 地址具有良好的声誉,反向 dns/spf 记录,对活动进行良好的退订和退回处理,对内容进行垃圾邮件检查,并让收件人将您添加到他们的地址书。

这将给你一个更好的交付机会...

Sundeep.//

于 2009-07-05T10:50:17.370 回答
1

试试这个:

使用 HTML 编写电子邮件(使用 PHP 并没有那么棘手)。在那封电子邮件中,包含一张图片(可能只是一个漂亮的徽标或其他东西)。这张图片将是一张特殊的图片......它的 src 将是,比如说,myserver.com/images/logo.gif?recipient@email.com。需要为每个发送电子邮件的人动态生成此 src。然后,如果收件人打开电子邮件,电子邮件客户端将向您的服务器询问 logo.gif?recipient@email.com

因此,如果您的服务器收到对该图像的请求,您就会知道收件人@email.com 收到了您的消息。

您可以为 URL 末尾的标签创建一种特殊格式,这样它不仅会告诉它是谁,而且会告诉他们正在回复哪封电子邮件。

请记住,这是垃圾邮件发送者用来判断电子邮件地址是否处于活动状态的方法。因此,某些软件可能会询问用户是否认为您是垃圾邮件!此外,一些用户将没有图像支持(或将关闭此支持)。

祝你好运!

于 2008-10-08T23:02:10.267 回答
1

如果是内部邮件,请发送电子邮件,但不要将邮件内容放入电子邮件中。提供指向网站的链接,但在 url 中提供标识符,以便您可以将页面视图与电子邮件联系起来。

如果它是外部的,你仍然可以这样做,只要另一端的人是合作的。

您还可以在目标邮件系统上设置一个普通帐户并进行检查。如果您通过该帐户收到电子邮件,则系统可能未设置为将其过滤掉。

您还可以要求接收系统的管理员对收到良好的电子邮件进行退回(您知道,将您的确认网页卷曲的脚本),但这需要大量的合作。尽管在那个时候,通过 Web 服务传递消息可能会更容易。

于 2008-10-08T23:06:48.680 回答
0

如果我没记错的话,只要你发送成功,你就可以放心,它至少已经被接收邮件服务器接受了。

于 2008-10-08T22:46:24.790 回答
0

一个网络错误可能会给你一些类似已读回执的东西,如果这就是你所要求的。

于 2008-10-08T22:55:12.590 回答
0

SMTP 协议是异步的,因此唯一有保证的反馈可以由用户邮件客户端返回。如果投递出现问题,您会将退回的电子邮件退回到信封发件人中定义的地址(邮件标题返回路径)这些退回的时间是不可预测和未定义的。到目前为止,跟踪 HTML 电子邮件正文中的像素是报告用户实际打开电子邮件的最佳方式。

于 2008-10-09T04:01:02.940 回答