【问题标题】:Get the correct response from Yahoo SMTP从 Yahoo SMTP 获取正确响应
【发布时间】:2011-06-22 01:02:06
【问题描述】:

我尝试通过 php 向 yahoo 收件人发送邮件。 每次我连接到雅虎时,我都会收到收件人地址的 250 状态代码,即使它不存在。我找到了一个从 yahoo 获得正确状态代码的脚本,但我找不到我在脚本中所做的差异或错误。我尝试发送不同的命令并在多台服务器上运行脚本,但对于 RCPT-TO-command,我总是得到 250 响应。 为什么我没有得到正确的响应?当收件人不存在时,我想停止我的脚本!

获得正确响应的 verify-email.org 日志:

存在有关 yahoo.com 的 MX 记录。
连接到 g.mx.mail.yahoo.com SMTP 成功。
=220 mta1062.mail.sp2.yahoo.com ESMTP YSmtp 服务就绪
> HELO verify-email.org
=250 mta1062.mail.sp2.yahoo.com
> 发件人:
=250 发件人  好的
> RCPT 收件人:
=554 传递错误:dd 此用户没有 yahoo.com 帐户 (sdjrfvn3r@yahoo.com) [0] - mta1062.mail.sp2.yahoo.com

得到错误响应的脚本日志:

C 连接到 h.mx.mail.yahoo.com
S 220 mta1144.mail.mud.yahoo.com ESMTP YSmtp 服务就绪
C HELO my-domain.com
S 250 mta1144.mail.mud.yahoo.com(152.70 毫秒)
C 邮件来自:
S 250 发件人  正常(723.29 毫秒)
C RCPT 收件人:
S 250 收件人  正常(152.67 毫秒)
C 关闭套接字连接
S 连接优雅关闭

您可以在此处找到正常工作的脚本:http://verify-email.org

我的脚本:

    while(preg_match('/^\d\d\d-/', $r = fgets($sock))) {
        $response .= $r;
    }
    $response .= $r;

    return $response;
}

$mxRecord = "a.mx.mail.yahoo.com";
$domain = 'example.com';
$mailFrom = 'mailfrom@example.com';
$rcptTo = 'doesntexist2011@yahoo.com';

$commands = array(
    "HELO ".$domain."\r\n",
    "MAIL FROM: <".$mailFrom.">\r\n",
    "RCPT TO: <".$rcptTo.">\r\n",
//  "DATA\r\n",
//  ... email subject and content
//  ".\r\n",
    "QUIT\r\n"
);

if($sock = fsockopen($mxRecord, 25, $errno, $errstr, 30)) {
    foreach($array as $cmd) {
        echo htmlentities($cmd);
        echo '<br />';
        fwrite($sock, $cmd);
        echo htmlentities(getResponse($sock));
        echo '<hr />';
    }

    fclose($sock);
}
else {
    echo 'no connection';
}
?>

一些信息:

  • 我使用了自己的域(不是 example.com)
  • 脚本位于我的域所指的服务器上
  • 服务器不在 spamhaus.org 等任何黑名单中
  • “邮件发件人”中使用的邮件地址确实存在
  • 我使用 getmxrr() 来获取 yahoo.com 的 mx 条目
  • 我尝试过 HELO 和 EHLO -> 总是相同的响应

【问题讨论】:

  • 您是否找到了从 yahoo 获取正确 554 代码的解决方案?我也在寻找解决方案很长时间。
  • 试试这个。 pypi.python.org/pypi/validate_email。但我不确定您是否会看到 yahoo.com 地址的结果有任何变化,因为他们不合作。
  • 我写了一个 python 脚本来破解 verify-email.org gist.github.com/arulrajnet/eaecf393eebd57264e09 你可以使用它。但是你必须使用代理来绕过每小时 5 个请求的限制。

标签: php email smtp yahoo verify


【解决方案1】:

不要在 verify-email.org 上浪费你的钱。我编写了一个在验证电子邮件地址方面效果很好的课程,但是几天来一直遇到问题,试图从雅虎返回除 250 Recipient OK 消息之外的任何内容。我终于想出了一个解决方法,不幸的是,在访问他们的服务器大约 10 次后,我将在这里分享,他们阻止了我 12 个小时。然后,我将课程从我的开发服务器移动到具有良好域名、配置 rDNS 以及允许我发送电子邮件而不会被列入黑名单的所有内容的实时服务器上减去域密钥。同样,我只收到了 250 个 SMTP 响应,并且我的 IP 再次被我的工作阻止了。我最终决定分解并购买脚本以“看看他们在做什么不同”。答案是:他们没有做任何不同的事情。事实上,该脚本是垃圾,几乎与您可以在网上找到的任何基本脚本相同。我将它加载到 2 台不同的服务器上并使用两种不同的配置,按照脚本的指示进行操作(它只有 1 或 2 条指令),但是,对于我收到 554 的完全相同的电子邮件地址,我得到了相同的 250 响应在网站上。再深入一点,我发现它可能是一家销售脚本的电子邮件营销公司。他们要么与雅虎和其他人有关系,要么调用其他一些后端系统,我不知道,但我知道脚本不起作用。此外,发送给卖家和 SWREG(一家数字河流公司)的电子邮件以及退款请求均未得到回复。我发送了我的结果与他们在网站上显示的截图。我现在正在向我的信用卡公司提出争议。要点是,不要从 verify-email.org 购买。它是一个骗局。除非你想花掉 45 美元。

我唯一的建议是与专业公司建立业务关系或通过 ReturnPath 之类的公司(非常非常昂贵)。或者,向每个订阅者发送确认电子邮件。不幸的是,我为一家营销公司工作,该公司无法根据他们与附属合作伙伴的规则发送确认电子邮件,因此我必须使用第三方服务(昂贵)或提出其他解决方案。祝你好运。

【讨论】:

  • 你能联系我,谈谈配置吗?
  • 你是在问我配置设置还是打算告诉我如何配置它才能工作?
  • 请求配置设置。我也尝试了替代方法,但仍然得到错误代码 999。也许我们可以比较我们的设置并找出差异。
  • 我不知道如何得到上面所说的正确响应。
【解决方案2】:

您是否阅读了 verify-email.org 的常见问题解答? "对于某些域,您无法验证地址是否正确,因为它们的邮件服务器不合作。例如:yahoo.com"

这是因为这些邮件服务器不希望垃圾邮件发送者获取已知良好的电子邮件地址。

【讨论】:

  • 您好,没错,但它们可以正常工作,尽管他们说他们不这样做。尝试任何你知道的雅虎地址:响应总是正确的。
猜你喜欢
  • 1970-01-01
  • 2019-07-13
  • 2012-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 2016-08-28
  • 2015-01-03
相关资源
最近更新 更多