phpmailer ERROR: не удалось создать почтовую функцию

Я использую localhost WAMP server (Windows) для веб-хостинга. Я получаю следующую ошибку.

phpmailer ERROR: Не удалось создать почтовую функцию.

Я пробовал много решений, но ничего не работало для меня.

PHP-скрипт рассылки

$mailer = new PHPMailer(); $mailer->IsMAIL(); $mailer->CharSet = 'utf-8'; $mailer->AddAddress($formvars['email'],$formvars['name']); $mailer->Subject = "Your registration with ".$this->sitename; $mailer->From = $this->GetFromAddress(); $confirmcode = $formvars['confirmcode']; $confirm_url = $this->GetAbsoluteURLFolder().'/confirmreg.php?code='.$confirmcode; $mailer->Body ="Hello ".$formvars['name']."\r\n\r\n". "Thanks for your registration with ".$this->sitename."\r\n". "Please click the link below to confirm your registration.\r\n". "$confirm_url\r\n". "\r\n". "Regards,\r\n". "Webmaster\r\n". $this->sitename; if(!$mailer->Send()) { $this->HandleError("Failed sending registration confirmation email.".$mailer->ErrorInfo); //echo "Mailer Error: " . $mailer->ErrorInfo; return false; } return true; 

Как мне диагностировать эту ошибку?

Related of "phpmailer ERROR: не удалось создать почтовую функцию"

$mailer->IsMAIL(); сообщает PHPMailer использовать функцию PHP mail() для доставки электронной почты. Он работает из коробки в Unix-подобных ОС, но не в Windows, потому что настольные версии Windows не устанавливают SMTP-сервер (он доступен на установочном диске).

Чтобы заставить его работать в Windows, вам нужно изменить конфигурацию PHP. Либо вы редактируете php.ini (настройка будет применяться глобально), либо вы можете использовать функцию ini_set() чтобы изменить ее только для текущего выполнения текущего скрипта.

Лучший способ – изменить php.ini . Вы можете найти его в каталоге установки PHP или в каталоге Windows. Проверьте выход функции PHP phpinfo() чтобы узнать точное местоположение.

Откройте php.ini в текстовом редакторе (тот, который вы используете для написания кода, является лучшим) и найдите раздел, который выглядит так:

 [mail function] ; For Win32 only. ; http://php.net/smtp SMTP = localhost ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = me@example.com 

Для SMTP используйте имя или IP-адрес почтового сервера вашей компании. Или ваш почтовый сервер вашего интернет-провайдера, если вы дома. Или проверьте конфигурацию своего почтового клиента.

smtp_port имеет значение 25 для стандартного SMTP или 587 если сервер использует SSL для шифрования его связи.

Также раскомментируйте параметр sendmail_from если он закомментирован (удалите из начала строки) и разместите там свой адрес электронной почты.

Подробнее о настройке PHP для отправки электронной почты в Windows на странице документации .

Другой вариант – установить SMTP-сервер на компьютер. Вы можете найти его на установочном диске Windows или использовать стороннее решение.


Если вы решите не устанавливать SMTP-сервер на компьютер, вам даже не нужно изменять php.ini . Вы можете изменить код сценария для использования SMTP-сервера:

 $mailer = new PHPMailer(); $mailer->IsSMTP(); $mailer->Host = "mail.example.com"; $mailer->Port = 25; 

Проверьте этот пример PHPmailer для всех параметров и их значения.

Если SMTP-сервер использует SMTP-аутентификацию (провайдеры веб-почты делают это, ваш интернет-провайдер или ваша компания может это сделать или, возможно, не сделает этого), вы должны также добавить:

 $mail->SMTPAuth = true; $mail->Username = "yourname@example.com"; $mail->Password = "yourpassword"; 

Например, если вы используете SMTP-сервер Gmail, используйте адрес электронной почты и пароль Gmail. Замените «Gmail» на «Hotmail» или «Yahoo!», или ваш поставщик веб-почты или ваша компания в приведенном выше предложении.

Настройка рабочего почтового клиента из localhost всегда является миссией и часто «ненужной», поскольку это просто песочница. Хотя некоторые разработчики хотят решить загадку (я один из них), некоторые ищут более легкую альтернативу.

Я бы посоветовал вам установить HMailServer

Я видел много людей, которым повезло очень быстро, используя hmail.

Проверьте это сообщение для пошагового: как отправить письмо с локального сервера WAMP для отправки электронной почты Gmail Hotmail или так далее?