2016-09-14 3 views
0

Мне сказали, что sendmail может вернуть журнал транзакций (или, возможно, последний статус) обратно в php-почту, чтобы вы могли проверить, действительно ли почтовый сервер мог отправить сообщение. Как это делается на самом деле? Я не могу найти ссылки на него. Короче говоря, я хочу знать, действительно ли sendmail мог связаться с получателем и иметь php mail() или любой метод.Передача ответа sendmail на почту php

ответ

0

просто поместить его в if состоянии

if(mail($param)){ 
    echo "email sent"; 
}else{ 
    echo "there is some error"; 
} 

550 для спама или другом для пользователя не существует

не удается обнаружить.

+0

Уверенный, но что, если письмо отскочил и получил 550 для спама или другого для пользователя, не существует? Я не буду знать. – UKUser35

+0

Обратите внимание: команда 'mail()' -command возвращает логическое значение, если почтовый клиент системы получил сообщение от PHP. Другими словами: если sendmail не может отправить сообщение (по какой-либо причине), команда 'mail()' все равно вернет значение true. –

+0

Коллега сказал мне, что Rackspace каким-то образом может заставить его работать (я не принимаю их сейчас), и был способ заставить sendmail разговаривать с php-mail (или, может быть, это был другой способ), и я просто задавался вопросом если PHP-почта может быть сделана лучше и более подробно. – UKUser35

0

Я не считаю, что это возможно, не отслеживая журналы самого sendmail. Таким образом, вы:

  • должны иметь доступ к журналам почты на сервере (или, по меньшей мере, из электронной почты, с которого вы отправляете почту)
  • põll эти журналы для сообщений успеха/или отказа
  • Запуск метода в соответствии с этими журналами.

Обратите внимание, что эти почтовые журналы асинхронны с вашим кодом PHP. Отскок почты может наступить через пару секунд после того, как ваш скрипт уже завершен. Поэтому невозможно (или, по крайней мере, очень неэффективно) знать PHP, если сообщение, отправленное mail(), было успешно доставлено или если оно отскочило.

Также может быть, что у sendmail есть собственный интерфейс для опроса такого рода вещей с использованием командной строки, но я не знаю об этом.

В любом случае, это сложная задача. Но, как и в случае с самыми сложными вещами, есть, вероятно, кто-то, кто уже написал что-то вроде этого ;-)

0

Как я понимаю, вы имеете в виду «переданный ДРУГОЙ/ВНЕШНИЙ SMTP-сервер».

AFAIK Невозможно отправить sendmail с помощью sendmail.org (особенно sendmail-8.12.0 +).

Возможно, это возможно с помощью других серверов MTA/SMTP, но транзакция может занять много времени (минут).
Вы получите только результат первой или первой попытки доставки.

Что-то вроде «сообщить успешный переход на другой сервер занимает менее 3 секунд» может быть реализован в MTA/SMTP-сервер
но AFAIK это потребовало бы значительных изменений большинства серверов MTA/SMTP.