【问题标题】:PHP / Ruby on Rails SMTP Email Validation or check mail delivered or notPHP / Ruby on Rails SMTP 电子邮件验证或检查邮件是否已送达
【发布时间】:2011-09-04 18:50:42
【问题描述】:

PS:我不是垃圾邮件发送者,我的应用程序也不是。

我有一个包含数千个电子邮件地址的列表,我想测试它是一个有效的电子邮件地址还是不使用 SMTP。

我得到了一些代码 http://code.google.com/p/php-smtp-email-validation/,但我怀疑这会阻止/黑名单我的 IP/服务器。

我已经查看了一长串关于 stackoverflow 的相关问题。但是没有人为此提供适当的解决方案。因为有很多公司提供这种服务。他们是如何管理这些东西的?

我对python等其他平台持开放态度。

编辑

我可以理解,没有准确的方法来检测邮件是否已送达。但是有大约 50-90% 的可能性有任何方法可以检查邮件是否已在 ruby​​ on rails 中传递。

【问题讨论】:

  • 您尝试使用的类不起作用。许多邮件服务器仍然使用灰名单,前几次发送尝试会导致错误代码(您必须暂停运行 2 或 3 次才能获得合理的结果)。不能说黑名单的可能性。
  • @mario 那么解决方案是什么..

标签: php ruby-on-rails email smtp validation


【解决方案1】:

作为 SMTP 事务的一部分,发送 SMTP 服务器将发出 RCPT 命令以指示应将邮件发送到哪个电子邮件地址。

如果已知指定的收件人不是可送达地址,则 SMTP 服务器可能会在此时使用 550 代码进行响应。这仅适用于接收处理有限已知可能收件人列表的 SMTP 服务器。

如果已为给定域设置了“包罗万象”地址,这样无论给定地址是否有电子邮件帐户,*@example.com 都将被接受,您永远无法验证给定地址是否为实际有效。

因此,无法使用 SMTP 始终如一地验证电子邮件地址的有效性。您可以验证某些电子邮件地址是否无效;你永远不能假设没有无效性就意味着有效。

【讨论】:

  • 提供此类服务的大量电子邮件营销公司怎么样。他们到底在做什么??
【解决方案2】:

这是不可能的。现在在这个宇宙中绝对有办法 能够知道消息是否已送达。

一些协议如 X400 尽量给出交货通知, 不幸的是,总会有失败的情况。

因此,诸如 SMTP 之类的 Internet 协议甚至都没有尝试过。他们 尽最大努力让它发挥作用,但不提供任何保证,最重要的是, 他们不保证任何反馈。

发送消息时,涉及到很多实体。你, 您的 UA,您的 MTA,可能是一些中间 MTA,收件人 MTA, 收件人UA,收件人。好吧,不完全是。那里 很有可能您的收件人有多个邮箱,并且他 使用网络服务从他的几个邮箱中收集电子邮件以收集 将它们合并为一个 UA,所以它可能是这样的:你,你的 UA,你的 MTA, 可能是一些中间 MTA、接收方 MTA、收集方 UA、 收集者 MTA、实际接收者 MTA、实际接收者 UA、 收件人。在这些实体中的每一个之间,可能有一些 积极或消极承认的水平。但仅此而已。 实体 N 将知道该消息已被实体 N+1 在 链,但随后通信被关闭,它不会知道什么 在实体 N+1 和 N+2 之间发生以及何时发生。如果有一个 运气好的话,MTA 可能会向 发件人,但由于垃圾邮件,这不一定做太多了 和病毒。

嗯,最终,您的消息可能会到达最终收件人的 UA。 在那里,可以做一些事情来通知它已经收到, 甚至可能显示,带有一些非标准化的标题 在消息中。一些 UA 可以轻松配置以插入这些 标题,以及是否尊重它们。隐私和垃圾邮件/病毒精通 用户不会激活此功能(它允许地址收集器 轻松验证电子邮件地址以转售给垃圾邮件发送者),因此 您得到实际答案的可能性非常低 (除非你向笨蛋发送电子邮件)。

但即使此功能已激活且运行良好,事实上 您收到收件人的 UA 发送的消息,告诉您 您的电子邮件已显示并不能证明任何事情。值得注意的是,它 并不能证明您的邮件已被收件人查看,很多 更不用说读了,更不用说懂了!

总之,您可以从技术上确定您的消息 被发送到链中的第一个实体。就这样。从那里 开,播放会被接收、阅读和理解。

如果您想确定邮件是否已送达,您必须 使用更高级别的协议。例如,如果您在 您的电子邮件期待答案 A1 或答案 A2,您有四个 可能性:

  • 你会得到答案 A1。 您可以假设邮件已送达并已阅读。 但是理解了吗? A1 真的是收件人想要发送的答案吗?

  • 您会得到答案 A2。 您可以假设邮件已送达并已阅读。 但是理解了吗? A2 真的是收件人想要发送的答案吗?

  • 你会得到答案 A3。 您可以假设邮件已送达、已阅读且未被理解。

  • 您迟迟得不到答复。 你不能假设任何事情。尝试发送另一封电子邮件以获取答案。 如果您仍然没有得到任何实际通信的确认 尝试给收件人打电话。或者亲自见面。或者打他 脸。如果您仍然没有得到任何答案,您可以考虑您的 收件人昏迷或死亡,并假设消息没有通过。 (有些人认为与某人交流是值得的 昏迷中,但我相信刺激他们 大脑,你不能期待答案,他们不会开始回答你的 当他们醒来时积压讨论)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多