@MaikMain
Начинающий backend - developer

Ошибки при отправки сообщений через SMTP. Yii2?

Добрый день. Сижу уже второй день и не понимаю почему у меня ошибки лезут: " Expected response code 250 but got code "550", with message "550 not local sender over smtp".

Предоставляю код.
Котроллер - CallbackController:
spoiler
<?php

namespace frontend\controllers;

use frontend\models\CallbackForm;
use Yii;

class CallbackController extends AppController
{
    public function actionIndex()
    {
        $model = new CallbackForm();
        if ($model->load(Yii::$app->request->post()) && $model->callback(Yii::$app->params['emailto'])) {
            Yii::$app->session->setFlash('callbackFormSubmitted');
            return $this->redirect(Yii::$app->request->referrer);
        } else {
            return $this->renderAjax('callback', [
                'model' => $model,
            ]);
        }
    }
}


Форма:
spoiler
<?php

namespace frontend\models;

use yii\base\Model;
use Yii;

class CallbackForm extends Model
{
    public $name;
    public $phone;

    public function rules()
    {
        return [
            [['name', 'phone'], 'required'],
            [['name'], 'string', 'max' => 100],
            [['phone'], 'integer'],
        ];
    }

    /**
     * {@inheritdoc}
     */
    public static function tableName()
    {
        return 'callback';
    }

    public function attributeLabels()
    {
        return [
            'name' => 'Имя',
            'phone' => 'Телефон',
        ];
    }

    public function callback($emailto)
    {
        /* Проверяем форму на валидацию */
        if ($this->validate()) {
            Yii::$app->mailer->compose('valli/callback', [
                    'name' => $this->name,
                    'phone' => $this->phone,
                ])
                ->setFrom([Yii::$app->params['adminEmail']]) /* от кого */
                ->setTo(Yii::$app->params['emailto']) /* куда */
                ->setSubject('Заявка обратного звонка') /* тема отправителя */
                ->send(); /* функция отправки письма */
            return true;
        } else {
            return Yii::$app->session->setFlash('error', 'Ошибка при отправлении сообщения');
        }
    }
}


View:
spoiler
<?php $form = \yii\bootstrap\ActiveForm::begin(['id' => 'contact-form', 'action' => ['callback/index'],]); ?>
    <div class="popup-fos" ><span id="modal_close" class="close">ₓ</span>
        <p class="popup-fos__text">На какой номер вам позвонить?</p>
        <form action="" method="post" class="call_order_fos">
            <input type="text"  name="CallbackForm[name]" aria-required="true" aria-invalid="true" placeholder="Ваше имя" class="v-fld"/>
            <input type="tel" name="CallbackForm[phone]" aria-required="true" aria-invalid="true" value="" placeholder="Ваш телефон" class="v-fld"/>
            <?= \yii\helpers\Html::submitButton('Заказать звонок <span class="werg">мне!</span>', ['class' => 'v-darkbtn', 'name' => 'callback-button', 'id' => 'refreshButton',]) ?>
            <p>Нажимая, вы подтверждаете отправку персональных данных.</p>
        </form>
    </div>
<?php \yii\bootstrap\ActiveForm::end(); ?>


common/config/main-local.php (Логин и пароль скрыл, но они на 100% правильные)
spoiler
'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            'useFileTransport' => false,
            'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.mail.ru',
                'username' => 'email',
                'password' => 'пароль',
                'port' => '465',
                'encryption' => 'SSL',
            ]
        ],


common/config/params.php
spoiler
<?php
return [
    'adminEmail' => 'емайл админа отправителя',
    'emailto' => 'емайл кому посылаем',
    'user.passwordResetTokenExpire' => 3600,
];


Пароль для внешних приложений получил и в ставил в поле password. E-mail админа и e-mail подключения один и тот же.
Не понимаю почему вылетают ошибки, подскажите пожалуйста. За ранее большое спасибо.
  • Вопрос задан
  • 2449 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Tiasar
Web Developer
Ну как бы ответ в вопросе - 550 not local sender over smtp Нет говорит такого пользователя для SMTP, ковыряйте
'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.mail.ru',
                'username' => 'email',
                'password' => 'пароль',
                'port' => '465',
                'encryption' => 'SSL',
            ]


username - полный указываете? с доменом? Незнаю как на mail.ru, для акка почты гуголь надо явно указать что можно по SMTP цепляться, это второй вектор где может быть проблема.
Ответ написан
@ronni10
в поле пароль введите пароль для внешних приложений, созданный в маил.ру
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы