Здравствуйте, написал на php скрипт в котором есть функция отправки письма. Задействую библиотеку phpMailer. После переноса на хостинг письма не отправляются. На локальном веб-сервере всё работает правильно. В чём может быть ошибка? PHP: <?php // Файл с настройками (config.php) // Настройки Email $site = array("from_name" => "Администратор", // from (от) имя "from_email" => "abc@mail.ru", // from (от) email адрес // На всякий случай нужно указать настройки // для дополнительного (внешнего) SMTP сервера. "smtp_mode" => "enabled", // enabled or disabled (включен или выключен) "smtp_host" => "smtp.mail.ru", "smtp_port" => 465, "smtp_username" => "abcd@mail.ru", "smtp_password" => "12345"); $smtp = array( "host" => "smtp.mail.ru", //smtp сервер "debug" => 0, //отображение информации дебаггера (0 - нет вообще) "auth" => true, //сервер требует авторизации "port" => 465, //порт (по-умолчанию - 25) "username" => "abcd@mail.ru", //имя пользователя на сервере "password" => "12345", //пароль "addreply" => abcd@mail.ru", //ваш е-mail "replyto" => "abcd@mail.ru", //e-mail ответа "from_name" => "Администратор" ); ?> function smtpmail($to, $subject, $content, $attach=false) { require_once('config.php'); require_once('PHPMailer/class.phpmailer.php'); $mail = new PHPMailer(true); $mail->IsSMTP(); try { $mail->Host = $smtp['host']; $mail->SMTPDebug = $smtp['debug']; $mail->SMTPAuth = $smtp['auth']; $mail->Port = $smtp['port']; $mail->Username = $smtp['username']; $mail->Password = $smtp['password']; $mail->SMTPSecure = 'ssl'; $mail->CharSet = 'utf-8'; $mail->AddAddress($to); $mail->SetFrom($smtp['addreply'], $smtp['from_name']); $mail->AddReplyTo($smtp['addreply'], $smtp['from_name']); $mail->Subject = htmlspecialchars($subject); $mail->MsgHTML($content); $mail->Send(); } catch (phpmailerException $e) { $error = $e->errorMessage(); include 'error.html.php'; } catch (Exception $e) { $error = $e->getMessage(); include 'error.html.php'; exit(); } } smtpmail("abcd@gmail.com", "Новый комментарий", "Получен новый комментарий: <br> <br>" . $message); Ошибок никаких не появляется - просто пустой экран.
А как это можно узнать? Я попробовал записать результат в переменную и напечатать на экране, но появляется белый экран, видимо ещё до вызова функции где-то блокируется скрипт.
Способов несколько: отладка/debug http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html https://php.ru/forum/threads/howto-...i-po-shagam-i-s-kartinkami.58974/#post-474550 как самый простой вариант: PHP: echo "отладка:"; var_dump($mail->send());
Появилось: отладка:bool(true) . Ошибка была в том, что компьютер искал подключаемый класс в другой папке. Непонятно почему, видимо где-то есть ещё одно подключение. Сейчас всё работает, спасибо. За адреса спасибо, почитаю как отлаживать php скрипты.