Полу-выпуск PHPMailer

У меня странная проблема с PHPMailer: когда я пытаюсь отправить электронное письмо, я вижу эту ошибку: escapeshellcmd() has been disabled for security reasons, но если я проверю электронную почту, я вижу, что письмо отправлено, как я могу исправить / скрыть эту проблему?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
236
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ваша установка PHP отключила эту функцию, но, вероятно, это скорее предупреждение, чем ошибка, поэтому он продолжает запускать ваш код и отправлять вашу почту. Вы управляете отображением ошибок и предупреждений PHP в файле php.ini, посмотрите свойство error_display.

Лучшее решение - использовать SMTP для localhost, который не требует использования этой функции. Это также быстрее и безопаснее, чем использование функции PHP mail(), которую PHPMailer использует по умолчанию. Чтобы изменить, просто добавьте это в существующий код PHPMailer:

$mail->isSMTP();
$mail->Host = 'localhost';

@Syncro Проблема в том, что я не могу установить локальный почтовый сервер на моем общем хостинге.

user10038197 06.07.2018 17:26

Если mail() работает, значит, вы уже используете имеют как локальный почтовый сервер, и это нормально, если общие хосты предоставляют его. Я понятия не имею, почему кто-то больше использует виртуальный хостинг. С этим ужасно иметь дело, и на самом деле он не дешевле - вы можете получить полный функциональный сервер за 3 евро в месяц с полным корневым доступом.

Synchro 06.07.2018 17:28

@Syncro Я немного бедняк, у меня мало денег ..., в любом случае возможно, что эта проблема вызвана портом сервера?

user10038197 06.07.2018 17:32

Нет, если вы используете mail (), он не использует порт - он вызывает локальный двоичный файл sendmail через оболочку, что потенциально опасно в среде общего хостинга. Поскольку сам sendmail (скрытый от вас) общается с localhost через порт 25, я ожидаю, что ваше SMTP-соединение будет работать с такими же настройками. В качестве альтернативы обратитесь к документации вашего хоста, так как они расскажут вам, как отправлять электронную почту.

Synchro 06.07.2018 17:39
Ответ принят как подходящий

Используйте этот код, надеюсь, он поможет:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
$name = 'Your Name';
$to = '[email protected]';
$subject = 'Hello World!';
$message = 'This is a test mail!';
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = '*********';
$mail->SMTPSecure = 'tls';
$mail->addReplyTo($to, $name);
$mail->setFrom($to, $name);
$mail->addAddress($to);
$mail->Subject = $subject;
$mail->msgHtml($message);
$mail->send();

Просто измените адрес электронной почты и пароль и запустите.

Hope you included PHPMailer library in root, if no then also check the path.

Спасибо!

Другие вопросы по теме