8-800-775-47-72

Помощь

Неполадки при работе PHP-скриптов с отправкой почты

Почта не доходит до получателя (доходит с большой задержкой)

Если ваш PHP работает как модуль веб-сервера Apache, то проверьте электронный адрес администратора, прописанный для домена. Зайдите в ISPmanager, перейдите в раздел “Домены” -> “www-домены”, выберите нужный домен и нажмите кнопку “Изменить” на панели инструментов.

В открывшемся окне проверьте поле “E-mail администратора” - там должен быть указан действующий e-mail, заведенный локально на сервере. Если поле заполнено некорректно, то почта отправляется от имени www@localhost и останавливается спам-фильтрами получателя.

Ошибка “500 Internal Server Error”

Если вы работаете с PHP как CGI, то как описано выше проверьте правильность e-mail администратора, а также откройте файл php.ini и проверьте, что присутствует и корректно записана строка:

sendmail_path = "/usr/sbin/sendmail -t -i -f webmaster@o-smaug.ru"

где webmaster@o-smaug.ru -  действующий e-mail администратора, заведенный локально на сервере.

Если файл php.ini отсутствует, создайте его в директории /home/имя_пользователя/data/php-bin/, где имя_пользователя - имя пользователя, который указан как владелец сайта.

Скрипты PHP для отправки почты

Функция PHP, которая выполняет отправку почты - mail()

Самый элементарный скрипт отправки почты следующий:

<?php

mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");

?>

Более сложный вариант:

<?php

if($_POST['submit']) {       //проверка нажата ли кнопка “отправить”

       $title = substr(htmlspecialchars(trim($_POST['title'])), 0, 1000);

       $mess =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 10000);

       $to = 'test@test.ru';      //получатель

       $from='test@test.ru';   //отправитель

       mail($to, $title, $mess, 'From:'.$from);

       echo 'Письмо отправлено.';

}

?>

Еще более сложный вариант:

<?php

if((isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['phone'])&&$_POST['phone']!="")){

       $to = 'mail@yandex.ru';

       $subject = 'Обратный звонок'; //Заголовок сообщения

       $message = '

               <html>

                   <head>

                       <title>'.$subject.'</title>

                   </head>

                   <body>

                       <p>Имя: '.$_POST['name'].'</p>

                       <p>Телефон: '.$_POST['phone'].'</p>                        

                   </body>

               </html>';

       $headers  = "Content-type: text/html; charset=utf-8 \r\n";

       $headers .= "From: Отправитель <from@example.com>\r\n";

       mail($to, $subject, $message, $headers);

}

?>
Назад к категории