从Yahoo SMTP获取正确的响应

Luk*_*lze 0 php email yahoo smtp verify

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

verify-email.org的日志得到了正确的答复:

MX record about yahoo.com exists.
Connection succeeded to g.mx.mail.yahoo.com SMTP.
=220 mta1062.mail.sp2.yahoo.com ESMTP YSmtp service ready
> HELO verify-email.org
=250 mta1062.mail.sp2.yahoo.com
> MAIL FROM: <check@verify-email.org>
=250 sender <check@verify-email.org> ok
> RCPT TO: <sdjrfvn3r@yahoo.com>
=554 delivery error: dd This user doesn't have a yahoo.com account (sdjrfvn3r@yahoo.com) [0] - mta1062.mail.sp2.yahoo.com

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

C Connect to h.mx.mail.yahoo.com
S 220 mta1144.mail.mud.yahoo.com ESMTP YSmtp service ready
C HELO my-domain.com
S 250 mta1144.mail.mud.yahoo.com (152.70 ms)
C MAIL FROM: <existing-address@my-domain.com>
S 250 sender <existing-address@my-domain.com> ok (723.29 ms)
C RCPT TO: <sdjrfvn3r@yahoo.com>
S 250 recipient <sdjrfvn3r@yahoo.com> ok (152.67 ms)
C Close socket connection
S Connection closed gracefully

你可以在这里找到适当的脚本: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';
}
?>
Run Code Online (Sandbox Code Playgroud)

一些信息:

  • 我使用自己的域名(不是example.com)
  • 该脚本位于我的域所指的服务器上
  • 服务器不在像spamhaus.org这样的黑名单中
  • "Mail From"中使用的邮件地址确实存在
  • 我使用getmxrr()来获取yahoo.com的mx条目
  • 我试过HELO和EHLO - >总是一样的回应

小智 5

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

我唯一的建议是与专业公司建立业务关系或通过像ReturnPath这样的公司(非常昂贵).或者,向每个订户发送确认电子邮件.我很遗憾地为一家营销公司工作,该公司无法根据他们与其联属合作伙伴的规则发送确认电子邮件,因此我必须使用第三方服务(昂贵)或提出另一种解决方案.祝好运.