2015-05-14 6 views
1

Я использую базовый шаблон Yii2 и SwiftMailer отправить электронную почту ..Swiftmailer в Yii2 - Невозможно отправить электронную почту

Вот мой код config/web.php:

'mailer' => [ 
      'class' => 'yii\swiftmailer\Mailer', 
      // send all mails to a file by default. You have to set 
      // 'useFileTransport' to false and configure a transport 
      // for the mailer to send real emails. 
      'useFileTransport'=>'false', 
      'transport' => [ 
       'class' => 'Swift_SmtpTransport', 
       'host' => 'smtp.gmail.com', 
       'username' => '[email protected]', 
       'password' => 'password', 
       'port' => '587', 
       'encryption' => 'tls', 
      ], 
     ], 

и мой код контроллера:

$fname = Yii::$app->request->post('fname'); 
     $email = Yii::$app->request->post('email'); 

     $industry = Yii::$app->request->post('industry'); 
     $info = Yii::$app->request->post('info'); 

     $mail = Yii::$app->mailer->compose() 
      ->setFrom('[email protected]') 
      ->setTo($email) 
      ->setSubject('Test mail') 
      ->setTextBody($info) 
      ->send(); 

Я получаю журналы по электронной почте, но не электронная почта не является отправить ...

Спасибо.

ответ

0

Внимание, вы назначаете результат по электронной почте compose()...->send() почтовой почтой таким образом, что вы не отправляете электронное письмо, но сохраняете результат в этой переменной. попробовать без распайка, как:

$industry = Yii::$app->request->post('industry'); 
    $info = Yii::$app->request->post('info'); 

    Yii::$app->mailer->compose() 
     ->setFrom('[email protected]') 
     ->setTo($email) 
     ->setSubject('Test mail') 
     ->setTextBody($info) 
     ->send(); 

Также внимание к ложному значению я PHP

'useFileTransport'=>'false', 

, я думаю, вам нужно использовать

'useFileTransport'=>false, 

whitout ' характер

+0

Я попытался это тоже ... но все равно не работает. Я получаю журналы электронной почты, но не фактические сообщения электронной почты по адресу электронной почты –

+0

Я обновил ответ – scaisEdge

+0

все еще нет succes ... быстрый вопрос ... 'username' в' web.ph p' и 'setFrom()' в контроллере должны быть одинаковыми ..? и оба они должны быть включены ...? И я передаю свой адрес электронной почты как жестко закодированный ... будет ли какая-нибудь проблема, если я это сделаю ..? –

1

В чтобы ваша учетная запись была менее уязвимой, Google ввел с этой политикой. Когда мы входим в нашу учетную запись без создания какого-либо приложения в Google, Google запрашивает наше разрешение на обеспечение безопасности нашей учетной записи.

Access ниже URL, чтобы устранить эту проблему и выберите «Включите» https://www.google.com/settings/security/lesssecureapps

0

я получил такую ​​же проблему, и я использовал port=>25, которые решить мою проблему.

0

scaisEdge прав:

Вы устанавливаете 'useFileTransport'=>'false'. Поскольку 'false' - это строка, это будет оцениваться до (bool) true. Вам нужно установить его на 'useFileTransport' => false.

Далее:

Если вы используете что-то вроде АМС переменных Beanstalk среды, которые всегда устанавливаются в string, вы хотите, чтобы оценить его true так:

'useFileTransport' => $_ENV['APP_STOPMAILER'] === "true" ? true : false,

Смежные вопросы