Отправка писем через smtp с помощью phpmailer

У меня проблема с отправкой почты через PHPMailer и SMTP. Я написал этот код, но он не работает в моем сценарии. У меня две версии почтовика, первая работает без SMTP, а мне нужно использовать SMTP.

  1. Без версии SMTP.

  2. Вторая версия добавила PHPMailer, но когда я нажимаю кнопку отправки, он ничего не отправляет, а только останавливается при загрузке:


require_once(dirname(__FILE__).'/../../config.php');
require(dirname("/mail/PHPMailerAutoload.php"); // path to the 
PHPMailerAutoload.php file.

$mail->$fromEmail = NO_REPLY;
$mail->$headers = "MIME-Version: 1.0" . "\r\n";
$mail->$headers .= "Content-Type: text/plain; charset=utf-8" . "\r\n";
$mail->$headers .= "From: ".$fromEmail. "\r\n";
$mail->$subject = $LANG["WBS_REGM_SUBJECT"];
$mail->mail($user_email,$subject,$details,$headers);

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Mailer = "smtp";
$mail->Host = "localhost";
$mail->Port = "465"; // 8025, 587 and 25 can also be used. Use Port 465 for SSL.
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Username = "XXXXXXX";
$mail->Password = "XXXXXXXXX";

echo '<div id="mode">1</div>';
    } else {
        echo '<div id="mode">2</div>';
    }
} else {
    echo '<div id="mode">3</div>';
}
}

Что я буду делать для использования smtp? Как я могу исправить эту ошибку?


person oktam yoqubov    schedule 10.04.2017    source источник
comment
Разместите здесь свой реальный код, а не изображения вашего кода.   -  person Jay Blanchard    schedule 10.04.2017
comment
Какие ошибки вы получаете?   -  person Jay Blanchard    schedule 10.04.2017
comment
Вы не можете использовать полный URL-адрес в функции require, вместо этого используйте локальный путь.   -  person Variable    schedule 10.04.2017
comment
Это, скорее всего, будет вашим требованием. Вы не можете требовать этот URL.   -  person Farkie    schedule 10.04.2017
comment
Небольшое примечание: у вас есть ошибка в вашем коде. Отсутствует оператор if для ваших операторов else.   -  person ITWitch    schedule 10.04.2017


Ответы (2)


Ваш код находится на веб-сервере или локально? Это может быть проблемой!

$mail->Host = 'localhost'

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

mail()
person Jefferson Costa    schedule 10.04.2017
comment
Мой скрипт на реальном сервере, а не на локальном сервере. - person oktam yoqubov; 10.04.2017

Вы не можете включить файл, используя веб-URL. Вместо этого вы можете использовать локальный путь, а затем потребовать его:

require(dirname(__FILE__) . "/path/to/phpmailer/PHPMailerAutoload.php");

Чтобы получить каталог текущего включенного файла:

<?php
dirname(__FILE__);
?>

Например, если скрипт с именем «database.init.php», который подключается из любой точки файловой системы, хочет включить скрипт «database.class.php», который находится в том же каталоге, вы можете использовать:

<?php
include_once(dirname(__FILE__) . '/database.class.php');
?>

Ссылка: http://php.net/manual/en/function.dirname.php< /а>.

Следующий шаг — проверить, настроен ли ваш сервер для обработки SMTP-запросов. Убедитесь, что используемый вами порт SMTP открыт и может использоваться вашей программой.

person Variable    schedule 10.04.2017