Не удалось создать экземпляр почтовой функции: ошибка PHPMailer - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь создать контактную форму.И я искал по всему Интернету, как отправлять электронную почту, и они всегда говорят, что лучше использовать PHPMailer, чем функцию mail ().

Форма контакта состоит из: имени, электронной почты, комментариев и отправкиКнопка.

Я только что последовал этому уроку: https://alexwebdevelop.com/phpmailer-tutorial/, но он не работает, так как я всегда получаю сообщение об ошибке: «Не удалось создать экземпляр функции почты».когда я уже установил Composer.

Доказательство того, что я уже установил Composer: Composer установлен с autoload.php

Вот мой код внутри тегов php:

use PHPMailer\PHPMailer\PHPMailer;
require 'C:\xampp\composer\vendor\autoload.php';

if(isset($_POST['send'])) {
    $em = $_POST['email'];
    $nm = $_POST['name'];
    $msg = $_POST['comments'];

    $mail = new PHPMailer();
    $mail->setFrom($em, $nm);
    $mail->addAddress('mygmail@gmail.com', 'Admin');
    $mail->Subject = 'Concern';
    $mail->isHTML(TRUE);
    $mail->Body = '$em';

    if(!$mail->send()) {
        echo $mail->ErrorInfo;
    }
}

Спасибо за ответ на этот вопрос!Это будет большая помощь!

ОБНОВЛЕНИЕ: Содержимое / файл composer.json:

{"Требовать": {"phpmailer / phpmailer": "^ 6.0"}}

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Если вы прочитаете руководство по устранению неполадок PHPMailer, связанное почти везде (в том числе в сообщении об ошибке), вы обнаружите, что оно содержит подробное объяснение этой ошибки и способы ее устранения.Копирование оттуда:

Это означает, что ваша установка PHP не настроена для правильного вызова функции mail() (например, sendmail_path неправильно настроена в вашем php.ini), или у вас нет локального почтового сервераустановлен и настроен.Чтобы это исправить, вам нужно выполнить одно или несколько из следующих действий:

  • Установить локальный почтовый сервер (например, postfix).
  • Убедитесь, что ваш sendmail_path указывает на двоичный файл sendmail(обычно /usr/sbin/sendmail) в вашем php.ini.Обратите внимание, что в Ubuntu / Debian у вас может быть несколько файлов .ini в /etc/php5/mods-available и, возможно, в других местах.
  • Используйте isSendmail() и задайте путь к двоичному файлу sendmail в PHPMailer ($mail->Sendmail = '/usr/sbin/sendmail';).
  • Используйте isSMTP() и отправляйте напрямую по SMTP.

Это не имеет ничего общего с тем, как вы загружаете автозагрузчик композитора.

0 голосов
/ 25 октября 2018

Вместо: require 'C:\xampp\composer\vendor\autoload.php';

Попробуйте: require __DIR__ . '/vendor/autoload.php';

Предполагается, что / vendor является подкаталогом корня вашего документа.

...