2015-05-15 2 views
2

Это мой почтовый компонент. Как вы можете видеть, из-за моих тестовых целей я использую электронную почту на файлYii 2: невозможно отправить журнал по почте

'mailer' => [ 
     'class'    => 'yii\swiftmailer\Mailer', 
     'viewPath'   => '@common/mail', 
     'useFileTransport' => true, 
    ], 

Это мой журнал компонент.

'log'  => [ 
     'traceLevel' => YII_DEBUG ? 3 : 0, 
     'targets' => [ 
      [ 
       // for this target, see http://www.yiiframework.com/doc-2.0/guide-runtime-logging.html 
       'class'   => 'yii\log\EmailTarget', 
       'levels'  => ['error'], 
       'categories' => ['yii\db\*', 'email_test'], 
       'message'  => [ 
        'from'   => ESHOP_EMAIL, 
        'to'    => DEVELOPER_EMAIL, 
        'subject'  => 'Errore db [' . YII_ENV . ']', 
       ], 
      ], 
     ], 
    ], 

В siteControlle-> actionIndex() Я проверяю журнал и электронный компонент таким образом

public function actionIndex() 
{ 
    Yii::error("testing mail log", "email_test"); 

    Yii::$app->mailer->compose() 
     ->setFrom([ESHOP_EMAIL => ESHOP]) 
     ->setTo(DEVELOPER_EMAIL) 
     ->setSubject("actionIndex executed on time " . date ("H:i:s")) 
     ->setTextBody("Useless body") 
     ->send(); 

    return $this->render('index'); 
} 

Как я ожидал, в каждой перезагрузке страницы индекса Я получил 2 .eml файлов, созданных внутри frontend/runtime/mail папка.

Таким образом, SwiftMailer работает и даже система регистрации.

Теперь проблема

Я стараюсь, чтобы удалить использование файла из mailer компонента, комментируя ряд

 'useFileTransport' => true, 

Когда я перезагрузки страницы индекса, я получил второе ПОЧТУ, один вручную скомпилирован и отправлен, но я НЕ ПОЛУЧИЛ первое письмо, которое должно быть автоматически составлено и отправлено системой регистрации с помощью SwiftMailer.

Что случилось?

+0

транспортный намотка? – anonymous

+0

Пожалуйста, покажите конфигурацию почтовой программы. Я не вижу trasnsport – scaisEdge

+0

@scaisEdge: транспорт по умолчанию должен использовать функцию mail() php, это моя цель. – realtebo

ответ

1

Извините за всех.

Проблема была ошибкой в ​​адресе назначения. С помощью регистратора ошибка, вызванная электронной почтой, не может быть отправлена, но с помощью ручной отправки адресата адресной ошибки просто игнорируется и отправляется электронное письмо.

+1

@arogachev спасибо за опечатку в моем ответе – realtebo

0

Если вы не используете функцию PHP для отправки электронной почты вам нужен транспорт, как этого

'mailer' => [ 
     'class' => 'yii\swiftmailer\Mailer', 
     'viewPath' => '@common/mail', 
     //'useFileTransport' => true, 
     'useFileTransport' => false, //set this property to false to send mails to real email addresses 
     //comment the following array to send mail using php's mail function 
     'transport' => [ 
      'class' => 'Swift_SmtpTransport', 
      'host' => 'smtp.gmail.com', 
      'username' => '[email protected]', 
      'password' => 'your_password', 
      'port' => '587', 
      'encryption' => 'tls', 
     ], 

И если вы не используете Gmail вам потребуется настроить параметр в надлежащем порядке.

+0

Ты плохо читаешь мой вопрос. Тот же почтовый компонент отправляет «ручной» составленный почтовый ящик, но не журнал. Также: по умолчанию для useFileTransport значение false. И: транспорт по умолчанию для SwiftMailer заключается в использовании функции php mail(). – realtebo

0

Я думаю, что значение по умолчанию для 'useFileTransport' равно true. Лучше всего установить на false и не прокомментировать его

+0

no, по умолчанию «false» – realtebo

+0

'' false'' или 'false' без' ''? – scaisEdge

+0

логическое ложное, конечно без котировок – realtebo

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