2016-12-08 2 views
1

Я пытался отправить электронную почту в Yii 2. Все работает хорошо, но у меня есть одна странная вещь - я всегда получал неправильный адрес электронной почты «от» (задан с setFrom()).Yii 2 mailer - неправильный «из» поле

Это код:

public function afterSave($insert, $changedAttributes){ 
    $this->send_email($this->attributes); 
} 

Это атрибуты приходят от моей формы по электронной почте способ отправки и что данные верны. В следующем шаге я пытаюсь отправить почту:

public function send_email($data) 
{ 
    return Yii::$app->mailer->compose('contactEmail', ['data'=>$data]) 
      ->setFrom($data['email']) 
      ->setTo('[email protected]') 
      ->setSubject($data['subject']) 
      ->setTextBody($data['message']) 
      ->send(); 
} 

Я хочу, чтобы отправлять электронные письма всегда на мой адрес: [email protected]. И я всегда получал сообщения, но электронные письма отправляются с адреса [email protected], а не из набора, установленного в $data['email']. Я попытался проверить его с var_dump и я получил правильные данные здесь:

public function send_email($data) 
{ 
    var_dump($data['email']); 
    exit(); 

    return Yii::$app->mailer->compose('contactEmail', ['data'=>$data]) 
      ->setFrom($data['email']) 
      ->setTo('[email protected]') 
      ->setSubject($data['subject']) 
      ->setTextBody($data['message']) 
      ->send(); 
} 

Например, когда я заполняю все мои формы входа и я установил [email protected] как отправитель var_dump возвращается [email protected] но когда я проверяю электронную почту получил это всегда от [email protected]. Та же самая ситуация у меня появилась, когда я использую ->setFrom('[email protected]') - в Gmail все еще было сообщение от [email protected]. Я не могу понять, почему я не могу получить сообщение из электронной почты, введенное в форму. Что я делаю неправильно здесь?

ответ

1

Трудно ответить на вопрос, не зная, что вы используете в качестве своего SMTP-сервера.

Предполагая, что вы используете Gmail (smtp.gmail.com) в качестве SMTP-сервера: Проблема заключается в настройках, настроенных на самом сервере Gmail. Он не позволит вам указать поле «От» к значению, отличному от вашего адреса электронной почты или одного из ваших псевдонимов. Итак, если вы аутентифицированы как [email protected], вам будет разрешено отправлять электронную почту как [email protected] или как любые учетные записи, настроенные как псевдонимы.

Для получения дополнительной информации о псевдониме см.: https://support.google.com/mail/answer/22370?hl=en.

Если вы не используете Gmail (smtp.gmail.com) в качестве SMTP-сервера:

Укажите ваш SMTP конфигурацию (не забудьте исключить пароль)?

'mailer' => [ 
      'class' => 'yii\swiftmailer\Mailer', 
      'transport' => [ 
       'class' => 'Swift_SmtpTransport', 
      --->......... 
      ], 
Смежные вопросы