Письмо отправлено! Но не пришло на почтовый ящик. PHP -> локальный хост -> XAMPP -> Веб-сервер

Вот мои файлы конфигурации.

sendmail.ini

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory.  (generally C:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=(Correct SMTP Server)

; smtp port (normally 25)

smtp_port=25

php.ini

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = (Correct SMTP Server)
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = (user@(server.com)) <- correct name

PHP-код

<?php
$from_name = "testing";
$from_email = "[email protected]";
$headers = "From: $from_name <$from_email>";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$body = "Hi,\nThis is a test mail from $from_name <$from_email>.";
$subject = "Test mail from test";
$to = "[email protected]";

if (mail($to, $subject, $body, $headers)) {
  echo "success!";
} else {
  echo "fail…";
}
?>

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


person user127886    schedule 12.04.2012    source источник
comment
Вы отправляете его на большой домен (например, gmail, aol, yahoo)? Если это так, отправка почты без выполнения определенных шагов (правильный DNS, нестандартное имя хоста для вашего IP) повысит ваш рейтинг спама. Кроме того, вы выполняете аутентификацию на SMTP-сервере, если это требуется?   -  person drew010    schedule 12.04.2012
comment
У вас настроена запись MX?   -  person blake305    schedule 12.04.2012
comment
@drew Я отправляю его на электронную почту Microsoft Outlook компании. Я не аутентифицировался на SMTP-сервере, потому что он не требует аутентификации пользователя и пароля.   -  person user127886    schedule 12.04.2012
comment
@blake Прошу прощения, сэр, но что такое запись MX?   -  person user127886    schedule 12.04.2012


Ответы (2)


Если вы тестируете это из дома или небольшого офиса, то ваш интернет-провайдер, вероятно, блокирует исходящий трафик на порту 25. Ваш PHP не сломается, но ваше сообщение будет заблокировано. Вам нужно будет подключиться к внешнему SMTP-серверу через другой порт, например 465 или 587. Подробную информацию о том, что они разрешают, см. на веб-сайте вашего интернет-провайдера.

person Resist Design    schedule 12.04.2012
comment
Сопротивляйтесь, я пробовал как 465, так и 587 номер порта. Это не работает, и нет, я не тестирую дома или в небольшом офисе. В настоящее время я работаю в MNC. Есть ли другой способ приблизиться к этому? Спасибо - person user127886; 12.04.2012
comment
Хорошо, последнее обновление: я использовал свой личный адрес горячей почты для отправки на электронную почту компании, и это сработало. И наоборот, я использовал электронную почту моей компании, чтобы отправить тест на мой личный адрес горячей почты. Это говорит о том, что компания не блокирует исходящий трафик, в чем сейчас может быть проблема? Кто угодно? Благодарю вас! - person user127886; 12.04.2012

Если вы внимательно посмотрите, вы увидите, что вам не хватает конкатенации во второй переменной $header, поэтому вы не отправляете заголовок «От:», что, вероятно, приводит к отклонению почты.

person Dan    schedule 30.06.2013