SMTP от Yandex: как отправить письма из PHP - пример настроек

Давайте рассмотрим, как можно отправить E-mail через SMTP Яндекса, с помощью PHPMailer

Уделите особое внимание тому, что в поле "From:" при отправке почты, обязательно должна быть именно почта аккаунта, который вы используете, в данном случае your-email-address@yandex.ru

Пример отправки почты для PHPMailer

$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';

$yourEmail = 'your-email-address@yandex.ru'; // ваш email на яндексе
$password = 'qwerty123'; // ваш пароль к яндексу или пароль приложения

// настройки SMTP
$mail->Mailer = 'smtp';
$mail->Host = 'ssl://smtp.yandex.ru';
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = $yourEmail; // ваш email - тот же что и в поле From:
$mail->Password = $password; // ваш пароль;


// формируем письмо

// от кого: это поле должно быть равно вашему email иначе будет ошибка
$mail->setFrom($yourEmail, 'Ваше Имя');

// кому - получатель письма
$mail->addAddress('info@phpstack.ru', 'Имя Получателя');  // кому

$mail->Subject = 'Проверка';  // тема письма

$mail->msgHTML("<html><body>
				<h1>Проверка связи!</h1>
				<p>Это тестовое письмо.</p>
				</html></body>");


if ($mail->send()) { // отправляем письмо
    echo 'Письмо отправлено!';
} else {
    echo 'Ошибка: ' . $mail->ErrorInfo;
}

В вашем аккаунте яндекса должна быть включена следующая настройка:

Найти ее можно перейдя в ваш аккаунт Почта → Все настройки → Почтовые программы

Не смотря на то, что smtp тут как будто не причем, для отправки через smtp нужно включить IMAP.

Также вы обязательно должны зайти в свой аккаунт почты и принять пользовательское соглашение.

Здесь я описал проблемы, с которыми сам столкнулся при настройке SMTP от Yandex. Если у вас чего-то не получилось, пожалуйста напишите об этом в комментариях

Замечание по безопасности

Как видно на скриншоте выше, в настройках красуется надпись о то, что использовать пароль от аккаунта небезопасно.

Это действительно так, и лучше всего одельно задать пароль для SMTP при помощи этой инструкции https://yandex.ru/support/id/authorization/app-passwords.html

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