Swiftmailer не отправляет письма.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

Swiftmailer не отправляет письма.

Сообщение terrarium volition »

Всем доброго дня!

Год назад пробовал - всё работало. Конфигов не сохранил, т.к. всё получилось в пол-пинка.
Сейчас хотел сделать и, увы, отправка писем не работает.
Отсылаю со стандартной формы ContactForm, которая идёт из коробки.

I. Через smtp.mail.ru:
Настройки в main-local.php

Код: Выделить всё

'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            'transport' => [
                'class'       =>  'Swift_SmtpTransport',
                'host'        =>  'smtp.mail.ru',
                'username'    =>  'xxx@bk.ru',
                'password'    =>  'yyyyyyyyyy', // Сгенерированный пароль входа на почту для внешних приложений
                'port'        =>  587,//465        // Пробовал оба варианта
                'encryption'  =>  'tls',//'ssl'     // Пробовал оба варианта
            ],
            'useFileTransport' => false,
        ],
Настройки в params.php

Код: Выделить всё

return [
    'adminEmail'    => 'xxx@bk.ru',
    'supportEmail'  =>  'xxx@bk.ru',
    'senderEmail'   =>  'xxx@bk.ru',
    'senderName'    =>  'xxx@bk.ru',
    'user.passwordResetTokenExpire' => 3600,
    'user.passwordMinLength' => 8,
];
Ошибка при отправке
Expected response code 354 but got code "503", with message "503 Valid RCPT command must precede DATA
- Какие данные ему нужны?
II. Через smtp.yandex.ru:

Код: Выделить всё

'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            'transport' => [
                'class'       =>  'Swift_SmtpTransport',
                'host'        =>  'smtp.yandex.ru',
                'username'    =>  'xxxxxx@yandex.ru',
                'password'    =>  'yyyyyyyyyy', // Сгенерированный пароль входа на почту для внешних приложений
                'port'        =>  587,//465        // Пробовал оба варианта
                'encryption'  =>  'tls',//'ssl'     // Пробовал оба варианта
            ],
            'useFileTransport' => false,
        ],
Настройки в params.php

Код: Выделить всё

return [
    'adminEmail'    => 'xxxxxx@yandex.ru',
    'supportEmail'  =>  'xxxxxx@yandex.ru',
    'senderEmail'   =>  'xxxxxx@yandex.ru',
    'senderName'    =>  'xxxxxx@yandex.ru',
    'user.passwordResetTokenExpire' => 3600,
    'user.passwordMinLength' => 8,
];
Ошибка при отправке
Failed to authenticate on SMTP server with username "autovisor22@yandex.ru" using 3 possible authenticators. Authenticator LOGIN returned Expected response code 235 but got code "535", with message "535 5.7.8 Error: authentication failed: This user does not have access rights to this service 1657959521-LhlPrWT9Cz-IehCTeVN
". Authenticator PLAIN returned Expected response code 235 but got code "535", with message "535 5.7.8 Error: authentication failed: This user does not have access rights to this service 1657959521-LhlPrWT9Cz-IehCTeVN
". Authenticator XOAUTH2 returned Expected response code 235 but got code "535", with message "535 5.7.8 Error: authentication failed: Invalid user or password! 1657959521-LhlPrWT9Cz-IehCTeVN".
- Пароль и логин верные! Копипастил с почты, перепроверил глазами.

Контроллер, он стандартный

Код: Выделить всё

public function actionContact()
    {
        $model = new ContactForm();
        if ($model->load(Yii::$app->request->post()) && $model->validate()) {
            if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
                Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
            } else {
                Yii::$app->session->setFlash('error', 'There was an error sending your message.');
            }

            return $this->refresh();
        } else {
            return $this->render('contact', [
                'model' => $model,
            ]);
        }
    }
Метод в модели, он тоже стандартный

Код: Выделить всё

public function sendEmail($email)
    {
        return Yii::$app->mailer->compose()
            ->setTo($email)
            ->setFrom([Yii::$app->params['senderEmail'] => Yii::$app->params['senderName']])
            ->setReplyTo([$this->email => $this->name])
            ->setSubject($this->subject)
            ->setTextBody($this->body)
            ->send();
    }
Подскажите, пожалуйста, что я делаю не так? :roll:
Казалось бы, простая вещь, но работать, почему-то, перестало.

В интернете решений не нашёл, посты про это есть, но ситуации - то опечатки, то несуществующая почта получателя, то ещё какая ерунда.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Swiftmailer не отправляет письма.

Сообщение ElisDN »

terrarium volition писал(а): 2022.07.16, 12:50 В интернете решений не нашёл, посты про это есть, но ситуации - то опечатки, то несуществующая почта получателя, то ещё какая ерунда.
По фразе "This user does not have access rights to this service" решение по настройке яндекса находится.
terrarium volition
Сообщения: 99
Зарегистрирован: 2021.07.15, 21:22

Re: Swiftmailer не отправляет письма.

Сообщение terrarium volition »

ElisDN писал(а): 2022.07.16, 14:00 По фразе "This user does not have access rights to this service" решение по настройке яндекса находится.
Дмитрий, спасибо, действительно, есть ответ!

Галочки проставил, отправка идёт! :)
Ответить