我是php的新手。我想向某人发送电子邮件,之后我需要检查是否可以收到此邮件。我怎么做?希望你们明白我的问题;)。 提前致谢。马克
答案 0 :(得分:6)
这是一个非常棘手的问题。唯一真正的方法是让PHP监控收件箱以检查您可能会收到的“无法投递的消息”通知。如果您真的想继续使用它,请查看用于PHP的POP3连接器。像这样:http://pecl.php.net/package/POP3
if (strpos(strtolower($subject), 'undeliverable') !== false){
//do whatever you want with the address that couldn't be reached
}
从技术上讲,您不需要为POP3编译PHP扩展(特别是如果您是PHP的新手)...您可以通过打开套接字和讲邮件服务器来连接和读取消息: http://www.adamsinfo.com/a-rudimentary-php-pop3-example/
绝对查看http://mailgun.net/,http://sendgrid.com/和http://postmarkapp.com/。
答案 1 :(得分:2)
如果您要发送HTML邮件,可以使用一个小技巧:
包含从您的网络服务器
加载的图片 <img src="http://yourdomain.com/tracker.php?id=1234567" />
tracker.php
中,记录调用脚本的id并发送1px xpp图像
但是,如果邮件客户端在显示电子邮件时没有从互联网上下载图像,则无法正常工作,例如Thunderbird,(IIRC Outlook也是如此)
答案 2 :(得分:1)
对此没有明确的解决方案。 Web错误是一个o.k.想法,但他们正在消失,因为他们是非常有问题的安全明智,并在我知道的每个当前电子邮件客户端默认阻止。我建议使用以下标题行检查brianreavis建议的反弹收件箱以及请求送达回执的组合:
Disposition-Notification-To:<xxx.xxx@example.com>
这样,您可以获得大多数底片(退回邮件)以及许多正面(收据)。发件人可以阻止发送收据,但是与解析错误通知一起,您应该拥有相当可靠的系统。
答案 3 :(得分:1)
在了解电子邮件已被阅读方面,有一个完美的解决方案。
不好的部分是电子邮件正文必须存储在网络服务器上。
诀窍: - 发送电子邮件只是一个小文本和一个URL,因此用户必须转到该URL以阅读电子邮件的内容。
换句话说......在电子邮件上,没有任何关于您要发送的内容,只有指向您在发送此类电子邮件之前创建的唯一页面的链接。
因此,要阅读内容,用户必须打开网络浏览器并转到此类网址。
诀窍是在eMail上放一些这样的文字......比如:bla,bla,bla ......按这里阅读更多内容。
概念:在线正文,访问此类正文的离线URL。
通过这种方式,您可以确定:如果已读取URL,则已阅读电子邮件。
不好的部分是您要发送的信息不在电子邮件中,必须位于唯一的网页上。
所以你必须控制没有机器人可以转到这样的URL ...例如使用URL: https://server/private/?eMail_Body=user
希望这个想法可以帮助别人。
答案 4 :(得分:0)
一个选项是Web Bug,但这些选项远非100%可靠,并且可能不是一种很好的行为方式。它不会区分未读的电子邮件和未投递的电子邮件,例如由于电子邮件地址错误,并且可以在不触发的情况下阅读包含Web Bug的电子邮件。
简而言之,您创建一个HTML电子邮件,其中包含一个元素,该元素在您的网站上具有该电子邮件所特有的URL。因此,如果客户端访问该URL,您可以确定有人已阅读您的电子邮件。 Wikipedia gives this example:
例如,发送到地址
somebody@example.org
的电子邮件可以包含网址http://example.com/bug.gif?somebody@example.org
的嵌入图片。每当用户阅读电子邮件时,都会请求此URL上的图像。服务器忽略问号后面的URL部分,以确定要发送的文件,但完整的URL存储在服务器的日志文件中。结果,文件bug.gif被发送并显示在电子邮件阅读器中;同时,服务器存储已发送到somebody@example.org
的特定电子邮件已被读取的事实。
但是,有可能 - 很可能 - 有人可以在不连接到该URL的情况下阅读您的电子邮件。这可能是因为:
这是一个经常使用的选项 - 无论是垃圾邮件发送者还是更负责任的营销人员 - 但我可能不会推荐它,除非你完全理解它的局限性和影响,如果你使用它,人们可能会想到你。 / p>