PHP-функция почты иногда работает - PullRequest
2 голосов
/ 12 июля 2011

Я пишу скрипт, который должен отправлять электронную почту через функцию почты PHP. Как написано ниже, это работает при отправке электронной почты на учетную запись Gmail, но не на моем домене. У нас работает сервер Exchange. На данный момент электронные письма отправляются с _www @ server. Кто-нибудь знает о проблеме с php mail и Exchange (или, может быть, даже адресами электронной почты, начинающимися с подчеркивания и Exchange ??)? Или, может быть, здесь есть еще одна проблема? Функция mail вернет true независимо от того, что.

Спасибо,

Джефф

$user = $_POST['email'];

$to = "someone@domain.org";

$subject = "Request to Reset EduTube Password";

$body = "Thank you " . $_POST['email'] . " for using the EduTube Password Reset System.\n\n";
$body .= "Please click the following link, or copy & paste it into your browser to reset your password.\n\n";
$body .= "http://testing.domain.org/reset.php?user=" . $user;

$headers = "From: someone@domain.org";

$from = "EduTube Password Reset System";

if (mail($to, $subject, $body, $headers)){

echo "Your email has been sent.  Please check your inbox shortly.";
echo "<br/><a href='http://testing.domain.org'>Click</a>";

}

1 Ответ

10 голосов
/ 12 июля 2011
Функция доставки

mail () прекращается, когда она передает вашу почту на SMTP-сервер.Его единственная ответственность - это реальный эквивалент взятия вашего конверта и помещения его в почтовый ящик на углу.Остальная часть почтовой службы (очистка этого ящика, его прохождение через процессинговые центры, отправка его в страну / город получателя и т. Д.) Полностью находится вне области действия mail ().Пока конверт попадает в почтовый ящик, mail () возвращает true и делает вид, что он был доставлен.

Итак ... проверьте журналы SMTP-сервера, чтобы увидеть, что на самом деле произошло с почтой.Возможно это было отмечено как спам получателем и отскочило.Может быть, он где-то застрял в очереди и т. Д. Об этом вам скажут только журналы - все, что вы видите / делаете в PHP, бесполезно, потому что PHP и mail () выполняют, возможно, только 1% процесса отправки / доставки электронной почты,и что-то не так в этих других 99%.

...