как узнать, не удалось ли php mail - PullRequest
5 голосов
/ 05 декабря 2011

Я отправляю письма из php mail (): и хочу получить сообщение об ошибке, если отправка не удалась по назначению.

$to = 'itsdfdsf@7sisters.in';
    $email_from = "info@7sisters.in";

    $full_name = 'XXXX';
    $from_mail = $full_name.'<'.$email_from.'>';



    $subject = "testing sender name";
    $message = "";
    $message .= '
            <p><strong>This is only a test mail. Please do not reply.</strong><br />
    ';
    $from = $from_mail;

    //$headers = "" .
    //         "Reply-To:" . $from . "\r\n" .
    //         "X-Mailer: PHP/" . phpversion();

    $headers = "From:" . $from_mail . "\r\n" .
               "Reply-To:" . $from_mail . "\r\n" .
               "X-Mailer: PHP/" . phpversion();


    $headers .= 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";        

    if(!mail($to,$subject,$message,$headers))
    {
        echo 'failed !!';
    }

Но хотя $to почта не существует, она не показывает failed !!

Ответы [ 7 ]

5 голосов
/ 05 декабря 2011

Почтовый метод просто отправляет почту. Если он не получит никаких ошибок (например, не найдя сервер и т. Д.), Он вернется успешно. Вы не сможете узнать, действительно ли почта попала в почтовый ящик получателя, если вы не создадите какой-либо код для отклоненных писем и т. Д.

3 голосов
/ 05 декабря 2011

Я думаю, что вы хотите проверить реальное письмо, а не только правильное отформатированное письмо.Поэтому я бы посоветовал вам взглянуть на этот блог

3 голосов
/ 05 декабря 2011

проверить возврат из mail

Возвращает TRUE, если почта была успешно принята для доставки, FALSE в противном случае.

Важнообратите внимание, что то, что письмо было принято для доставки, НЕ означает, что оно действительно достигнет назначенного пункта назначения.

Хотя тот факт, что оно возвращает true, вероятно, означает, что ваша почтовая программа принимает сообщениено затем происходит сбой, когда он пытается никому не отправлять ...

Вы должны запустить $to через валидатор, чтобы проверить его действительный адрес, а затем, если нет, выдать ошибку, не полагайтесь наmail() чтобы отфильтровать то, что, как вы уже знаете, неверно или легко проверить.

- ОБНОВЛЕНИЕ

Затем посмотрите @SeRPRo, но вы пытаетесь сделать тяжелую работутестировать программно - гораздо проще и надежнее отправить электронное письмо, которое требует, чтобы пользователь щелкнул ссылку, чтобы убедиться, что это реально, чем пытаться запрашивать SMTP-серверы, которые все имеютразличное поведение (читай: разбиты на разные степени).Также обратите внимание на то, что ваше предполагаемое поведение (с точки зрения кода) трудно отличить от спамеров, поэтому не удивляйтесь, если вам не удастся избежать проверки маршрута электронной почты.

1 голос
/ 05 декабря 2011

Но, хотя $ to mail не существует, он не показывает сбой !!

фактически тот факт, что почта доставляется на SMTP-сервер, не означает, что она будет доставлена ​​конечному пользователю. В PHP нет простого способа проверить, доставлен ли он.

0 голосов
/ 02 апреля 2013

Используйте phpmailer для отправки электронной почты и установите $ mail-> AddCustomHeader ('Return-path: bounce@mail.com'); Это отправит сообщение об отказе по адресу bounce@mail.com, если идентификатор получателя не существует или получатель не получит письмо в любом другом случае.

0 голосов
/ 23 мая 2012

В моем случае это помогло установить путь возврата через параметр командной строки "-f", который можно передать в параметре $ extra_parameters функции mail ().поэтому я звоню

mail($to, $subject, $message, $headers, "-f address.where.i.want.the.bounces@xy.com");

... в соответствии с некоторыми комментариями на http://www.php.net/manual/en/function.mail.php Hosting-Inviroments реагируют по-разному и имеют разные ограничения (возможно, адрес должен быть зарегистрирован в одной учетной записи хостинга, илинаходиться в том же домене, что и "От:" в головном узле ... и т. д.)

Страница, на которой я получил отскоки, которые должны быть получены (с не упомянутыми ограничениями, так каккажется) находится на Domainfactory http://www.df.eu

0 голосов
/ 05 декабря 2011

Вы можете проверить себя как способ проверки того, что он выходит из папки исходящих сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...