Получите правильный ответ от Yahoo SMTP - PullRequest
0 голосов
/ 06 февраля 2011

Я пытаюсь отправить письмо через php получателю Yahoo. Каждый раз, когда я подключаюсь к Yahoo, я получаю 250 кодов статуса для адреса получателя, даже если он не существует. Я нашел скрипт, который получает правильный код состояния от Yahoo, но я не могу найти различия или ошибки, которые я сделал в своем скрипте. Я пытался посылать разные команды и запускать скрипт на нескольких серверах, но я всегда получаю 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';
}
?>

Некоторая информация:

  • Я использовал свой собственный домен (не example.com)
  • Скрипт находится на сервере, где мой домен ссылается на
  • Сервер отсутствует в черном списке, например spamhaus.org
  • Используемый почтовый адрес в «Mail From» существует
  • Я использую getmxrr (), чтобы получить mx-записи yahoo.com
  • Я пробовал HELO и EHLO -> всегда один и тот же ответ

Ответы [ 2 ]

5 голосов
/ 01 января 2012

НЕ тратьте свои деньги на verify-email.org. Я написал класс, который очень хорошо работает при проверке адресов электронной почты, но у меня были проблемы в течение нескольких дней, когда я пытался вернуть что-нибудь из Yahoo, кроме сообщения 250 Recipient OK. Я наконец-то придумал работу, которой я хотел бы поделиться здесь, к сожалению, после того, как они попали на их серверы примерно 10 раз или около того, они заблокировали меня на 12 часов. Затем я переместил класс со своего dev-сервера на работающий сервер с хорошим доменным именем, настроенным rDNS и всем, что позволило бы мне отправлять электронные письма без получения черного списка минус ключи домена. Опять же, я получил только 250 ответов по SMTP и снова заблокировал мой IP из-за моей работы. Я наконец решил сломаться и купить сценарий, чтобы «увидеть, что они делают по-другому». Ответ: они не делают ничего другого. На самом деле сценарий был мусором и практически идентичен любому элементарному сценарию, который вы можете найти в Интернете. Я загрузил его на 2 разных сервера и с двумя разными конфигурациями, следовал указаниям сценария к письму (это были только 1 или 2 инструкции) и, тем не менее, получил те же 250 ответов для того же адреса электронной почты, что и 554 на сайте. Покопавшись немного глубже, я обнаружил, что это потенциальная компания, занимающаяся маркетингом электронной почты и продающая скрипт. У них либо есть отношения с Yahoo и другими, либо она вызывает какую-то другую бэкэнд-систему, я не знаю, но я знаю, что скрипт не работает. Кроме того, электронные письма, отправленные продавцу и SWREG (цифровой речной компании) остались без ответа, а также запрос на возврат. Я отправил скриншоты моих результатов в сравнении с тем, что они отображают на сайте. Я сейчас подаю спор с моей компанией кредитной карты. Суть в том, НЕ ПОКУПАЙТЕ с verify-email.org. Это афера. Это если вы не хотите разозлить 45 долларов.

Мой единственный совет - наладить деловые отношения с основными компаниями или обратиться в такую ​​компанию, как ReturnPath (очень и очень дорого). Или отправить по электронной почте подтверждение каждому подписчику. К сожалению, я работаю в маркетинговой компании, которая не может отправлять электронные письма с подтверждением на основе правил, которые они имеют со своими партнерами, поэтому мне приходится использовать стороннюю услугу (дорого) или придумать другое решение. Удачи.

1 голос
/ 06 февраля 2011

Вы читали часто задаваемые вопросы о verify-email.org?«Для некоторых доменов вы не можете проверить, хороший адрес или нет, потому что их почтовые серверы не взаимодействуют. Например: yahoo.com»

Это потому, что эти почтовые серверы не хотят спамеровсобирать заведомо хорошие адреса электронной почты.

...