Странное поведение в почтовой функции PHP, адрес не существует - PullRequest
0 голосов
/ 15 сентября 2009

У меня недавно была эта проблема с клиентом. Код гласил:

ini_set( "sendmail_from", "noreply@<current-domain>.com" );

// $target_email has been validated as a value username.
// $subject is a simple String.
// $message is an HTML message.
mail( $target_email, $subject, $message );

Когда я проверил это на своей машине, все работало нормально. Когда я тестировал его дома, на работе, в Windows 2000 (IE6), XP (четыре разных машины и экземпляр VirtualBox) (IE6 & 7, Opera 9, Firefox 3) и Vista (IE 7), а также через Konquerer и Firefox на Ubuntu (на двух разных машинах) он работал нормально (у меня нет Mac). Я пробовал сайт в четырех разных сетях и в трех разных странах. Я сделал все, что мог, чтобы взломать этот сайт, и не получил никакой ошибки, и электронное письмо пришло с noreply @ .com на ожидаемый адрес быстро.

Когда мой клиент проверил его в своем офисе, он получил ошибку SMTP, сказав, что имя noreply @ .com не существует, и он не получил письмо. Но те же строки отлично работают при работе на моем сервере (базовая установка LAMP работает под управлением PHP 5.3, у них Windows 5.2.6).

Что именно произошло? Моим лучшим предположением было то, что это какая-то странная проблема с сервером Windows, я не представляю, что еще это может быть. К сожалению, я не смог увидеть, как они настроили свои локальные машины для проверки этой теории.

1 Ответ

0 голосов
/ 16 сентября 2009

Мое предположение: клиентский SMTP-сервер настроен на ретрансляцию почты только по известным (например, из Active Directory) адресам и отклоняет (справедливо можно утверждать) всех остальных «отправителей»? Существует ли ненормированный адрес в клиентском домене?

Попробуйте отправить письмо с «известного» хорошего адреса user@clientdomain.com, telnet на сервер SMTP, ... чтобы попытаться сузить проблему.

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