





Ваша установка PHP отключила эту функцию, но, вероятно, это скорее предупреждение, чем ошибка, поэтому он продолжает запускать ваш код и отправлять вашу почту. Вы управляете отображением ошибок и предупреждений PHP в файле php.ini, посмотрите свойство error_display.
Лучшее решение - использовать SMTP для localhost, который не требует использования этой функции. Это также быстрее и безопаснее, чем использование функции PHP mail(), которую PHPMailer использует по умолчанию. Чтобы изменить, просто добавьте это в существующий код PHPMailer:
$mail->isSMTP();
$mail->Host = 'localhost';
Если mail() работает, значит, вы уже используете имеют как локальный почтовый сервер, и это нормально, если общие хосты предоставляют его. Я понятия не имею, почему кто-то больше использует виртуальный хостинг. С этим ужасно иметь дело, и на самом деле он не дешевле - вы можете получить полный функциональный сервер за 3 евро в месяц с полным корневым доступом.
@Syncro Я немного бедняк, у меня мало денег ..., в любом случае возможно, что эта проблема вызвана портом сервера?
Нет, если вы используете mail (), он не использует порт - он вызывает локальный двоичный файл sendmail через оболочку, что потенциально опасно в среде общего хостинга. Поскольку сам sendmail (скрытый от вас) общается с localhost через порт 25, я ожидаю, что ваше SMTP-соединение будет работать с такими же настройками. В качестве альтернативы обратитесь к документации вашего хоста, так как они расскажут вам, как отправлять электронную почту.
Используйте этот код, надеюсь, он поможет:
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.
Спасибо!
@Syncro Проблема в том, что я не могу установить локальный почтовый сервер на моем общем хостинге.