PHP почта не работает в одном скрипте, но работает в другом - PullRequest
2 голосов
/ 23 февраля 2010

У меня есть небольшой скрипт php mailer внутри php-файла, который отлично работает и отлично отправляет почту:

$subject = "subject"; 
$mail_body = "mail body";
$name = "noreply";
$email = "noreply@domain.com";
$recipient = "somebody@domain.com";
$header = "From: ". $name . " <" . $email . ">\r\n";
mail($recipient, $subject, $mail_body, $header);

Однако, если я возьму это и сделаю его собственным файлом, или помещу его в другой файл, это не будет работать. Сообщения об ошибках отсутствуют, электронное письмо не отправлено.

Нет никаких команд php ini и нет включенных файлов php.

Есть идеи о том, почему он работает в большем PHP-скрипте, но не работает сам по себе?

1 Ответ

1 голос
/ 23 февраля 2010

Все в порядке с вашим кодом. Я проверил его, заменив только адрес электронной почты в $ получателе своим адресом, и он работал нормально (я проверил его с помощью своей корпоративной электронной почты - Outlook на сервере Exchange и еще один тест с адресом Hotmail - оба работали нормально и дошли до моего почтового ящика). 1001 *

  • Но убедитесь, что новые строки в $ mail_body являются "\ n", а не"\ r \ n". Как вы можете прочитать в документации о параметре message :

Каждая строка должна быть отделена LF (\ n). Линии не должны быть больше чем 70 символов.

  • Убедитесь, что $ name и $ email * не содержат запрещенные символы, такие как <,> и новые строки (\ r, \ n или \ r \ n). Как указывает Майкл, новые строки могут привести к атакам по электронной почте . Вы не хотите, чтобы спаммеры использовали вашу контактную форму в качестве почтовой платформы!

Вам следует рассмотреть возможность использования библиотеки электронной почты, такой как PHPMailer , которая облегчит вашу разработку, поскольку mail () довольно сложна для продвинутой рассылки. Большинство из этих библиотек уже охватывают эти атаки и стандарты ...

...