Отправить письмо через почтовой сервер (SMTP)
Отправлять письма через почтовой сервер, например, через «Яндекс.Почта», можно по протоколу SMTP.
Рекомендуется использовать данный способ, т.к. это поможет избежать попадания в спам соощений, отправляемых напрямую через сайт.
Сначала надо установить библиотеку PHPMailer. Устанавливается библиотека через composer (установку composer можно прочитать на странице установка Yii).
Ссылка на библиотеку: https://github.com/PHPMailer/PHPMailer
composer require phpmailer/phpmailer
Код отправки
require 'vendor/autoload.php'; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; $mail = new PHPMailer(true); try { $mail->isSMTP(); // Отправить через SMTP $mail->SMTPAuth = true; $mail->CharSet = 'UTF-8'; // Кодировка письма // Почтовой сервер, с которого будет отправляться письма $mail->Host = 'ssl://smtp.yandex.ru'; $mail->Username = 'login@yandex.ru'; $mail->Password = 'password'; $mail->Port = 465; $mail->setFrom('login@yandex.ru', 'Name'); // От кого $mail->addAddress('address@yandex.ru'); // Кому $mail->isHTML(true); // Отправлять как HTML $mail->Subject = 'Тема письма'; $mail->Body = 'HTML-контент письма'; $mail->send(); echo 'Сообщение успешно отправлено'; } catch (Exception $e) { echo 'Ошибка: '.$mail->ErrorInfo; }
Код выше отправляет письмо через «Яндекс.Почта», используя аккаунт «login@yandex.ru».
Также можно использовать другие почтовые сервисы:
// Яндекс.Почта $mail->Host = 'ssl://smtp.yandex.ru'; $mail->Port = 465; $mail->Username = 'логин@yandex.ru'; $mail->Password = 'пароль'; // создаётся отдельно в настройках аккаунта // Mail.ru $mail->Host = 'ssl://smtp.mail.ru'; $mail->Port = 465; $mail->Username = 'логин@mail.ru'; $mail->Password = 'пароль'; // создаётся отдельно в настройках аккаунта // GMail $mail->Host = 'ssl://smtp.gmail.com'; $mail->Port = 465; $mail->Username = 'логин@gmail.com'; $mail->Password = 'пароль';
Поддержать автора