Устранение неполадок PHP Mail
Как я могу проверить проблему с отправкой почты на моем сервере? Я пробую простой тест:
if(mail($to, $subject, $message)) { echo 'Mail Sent'; }
который тест выводит текст; но, почта не приходит.
Как я могу отслеживать проблему?
6 Solutions collect form web for “Устранение неполадок PHP Mail”
Это довольно длинная история. Несколько точек маркера (Предполагая, что mail () возвращает true и ошибок в журнале ошибок нет):
- Адрес отправителя («От») относится к домену на вашем сервере? Если нет, сделайте это так.
- Ваш сервер включен в черный список (например, проверьте IP-адрес на spamhaus.org)? Это удаленная возможность с общим хостингом.
- Отфильтрованы ли письма фильтром спама? Откройте учетную запись с freemailer с папкой спама и узнайте. Кроме того, попробуйте отправить почту на адрес без спам-фильтра.
- Возможно, вам нужен пятый параметр «-f» почты (), чтобы добавить адрес отправителя? (См. Команду mail () в руководстве по PHP)
- Если у вас есть доступ к файлам журналов, проверьте их, как указано выше.
- Вы проверяете адрес «from:» для возможных отказов («Возврат отправителю»)? Вы также можете настроить отдельный адрес «error-to».
Для немецких докладчиков я написал довольно подробное «что делать» по этому вопросу некоторое время назад. См. Здесь .
После Myles, если вы находитесь в Linux-боксе, сделайте это в командной строке:
# echo “Body text.” | mail -s “Hello world” you@example.com
Если вы не получили это письмо, у вас возникла проблема с почтовой системой в этом поле. Это другой вопрос из заданного вами вопроса PHP.
Из руководства по PHP:
Return Values Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise. It is important to note that just because the mail was accepted for delivery, **it does NOT mean the mail will actually reach the intended destination**.
Не уверен, как сделать следующий шаг, но это важный момент.
Если все попытки устранения неполадок терпят неудачу – теперь предполагается, что mail () возвращает false по неизвестным причинам – переключитесь на почтовый скрипт, такой как PHPMailer, который позволяет обойти почту () вообще и напрямую подключиться через SMTP и предлагает расширенный режим отладки. Таким образом, вы должны иметь возможность настроить рабочее решение или найти суть проблемы.
Первое, что я начинал, это журнал ошибок PHP, а затем ваш журнал sendmail. Также попробуйте sendmail из командной строки и проверьте конфигурацию PHP, чтобы убедиться, что она настроена правильно для отправки почты.
Вы работаете на реальном веб-сервере здесь или что-то еще по линии личной тестовой программы? (То есть, ваша домашняя машина?) Если это последняя, я могу сказать вам, что у меня было много проблем в прошлом, когда мой ISP (Cox) фильтровал мои исходящие почтовые порты. (Они скажут вам, что они этого не делают, но я уверен, что они это делают.)
Я также получил некоторые исходящие сообщения, которые делали это, заставляя меня попасть в почтовую катушку Cox за несколько дней до того, как они были доставлены мне.
Надеюсь, это полезно.