- Хостинг
- Услуги
- Помощь
- Акции
Помощь
Неполадки при работе PHP-скриптов с отправкой почты на виртуальном сервере
Почта не доходит до получателя (доходит с большой задержкой)
Если ваш PHP работает как модуль веб-сервера Apache, то проверьте электронный адрес администратора, прописанный для домена. Зайдите в ISPmanager, перейдите в раздел «Сайты», выберите нужный домен и нажмите кнопку «Настройки сайта» на панели инструментов.
В открывшемся окне проверьте поле “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@test.ispvds.com" где webmaster@test.ispvds.com - действующий 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); } ?>