phpmailer но без хоста - PullRequest
       9

phpmailer но без хоста

0 голосов
/ 04 ноября 2018

Ранее у меня была функция mail () в PHP для работы с моим сайтом. Теперь у нас есть домен для сайта (сервер nginx) и теперь mail () просто не хочет себя вести, всегда возвращает false. У меня настроен PHP ini для mail () с правильным доменом как

Итак ... Я обратился к PHPMailer, и он все еще не работает .... Я получаю эту ошибку ....
Could not instantiate mail function.

Итак, мой вопрос: что не так? У меня нет хоста SMTP ... Я хочу использовать локальный сервер в качестве почтового сервера, как он работал раньше, и я считаю, что у меня есть право на это.

Был установлен с композитором.

Это мой код:

    require_once($_SERVER['DOCUMENT_ROOT']."/vendor/phpmailer/phpmailer/src/PHPMailer.php");
        require_once($_SERVER['DOCUMENT_ROOT']."/vendor/phpmailer/phpmailer/src/SMTP.php");
        require_once($_SERVER['DOCUMENT_ROOT']."/vendor/phpmailer/phpmailer/src/Exception.php");

        $emailer = new PHPMailer\PHPMailer\PHPMailer();
        $emailer->IsMail();



$emailer->SetFrom("noreply@my.domain");
                $emailer->FromName = "My Domain";
                $emailer->AddAddress($admin_data['email']);
                $emailer->isHTML(false);
                $emailer->Subject = "test";
                $emailer->Body = " test "
if(!$emailer->send()){
                    give_error("Send Email Error: " . $emailer->ErrorInfo);
                    return false;
                } 

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Перейдите по ссылкам на руководство по устранению неполадок. Для работы функции mail() необходим локальный почтовый сервер - я рекомендую postfix. Это не имеет ничего общего с вашим кодом.

Тем не менее, хотя использование локального почтового сервера является хорошим выбором, использовать SMTP для localhost быстрее и безопаснее, чем использовать функцию mail. См. Документацию PHPMailer, почему это так.

0 голосов
/ 04 ноября 2018

Если вы хотите понять, почему ваша почта, управляемая PHPMailer, не может быть отправлена, обязательно включите опцию PHPMailer "SMTPDebug" .

Для этого установите для свойства SMTPDebug значение «3» после создания экземпляра объекта PHPMailer. В вашем коде это будет выглядеть так:

//Echo errors, server responses, client message, data, commands & connection status
$emailer->SMTPDebug = 3;

Это выведет на экран все ошибки, ответы сервера и клиентские сообщения, которые может выдавать электронное письмо, когда оно пытается завершить отправку. Благодаря этому вы сможете лучше понять, что может вызвать сбои в работе вашей электронной почты или не отправлять ее вообще.

Даже если вы пытаетесь отловить ошибки в настоящее время, эта опция не сможет охватить всю широту и глубину информации, если эта опция не включена.

Пожалуйста, не забудьте отключить эту опцию перед началом работы. Если для свойства SMTPDebug задано значение 0, конечный пользователь не получит ошибок или важной серверной информации.

//Will disable all debugging.
$emailer->SMTPDebug = 0

Более подробную информацию о свойстве SMTPDebug вы можете найти в документации по PHPMailer, которая, вероятно, называется "PHPMailer-master/docs/" в вашей кодовой базе.

...