Como usar o swiftMailer em Yii2

Não consigo finalmente entender como usar a extensão swiftMailer em Yii2. A julgar por isso sobre este assunto, não encontrei perguntas, a tarefa é trivial, mas até o final não consegui entender.

Existem exemplos que não descrevem com mais detalhes todo o ciclo de envio da carta ou não entendo alguma coisa 🙁

Configuração

return [ //.... 'components' => [ ...... 'mail' => [ 'class' => 'yii\swiftmailer\Mailer', 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'localhost', 'username' => 'username', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ], ] ]; 

Enviar

 Yii::$app->mail->compose() ->setTo($toEmail) ->setFrom([$this->email => $this->name]) ->setSubject($this->subject) ->setTextBody($this->body) ->send(); 

Quero receber um exemplo de trabalho concreto . Obrigado.

PS Ajustou registros de domínio MX, DKIM, SPF adicionado.

UPD (alguma resposta) :

O e-mail que é passado no campo “De”, é posto por padrão no campo “Caminho de retorno”, deve ser o endereço existente . Alguns provedores não permitem o envio de emails de endereços de email inexistentes.

Certifique-se de ter inicializado o seu aplicativo no ambiente de produção para enviar e-mails de sua aplicação, caso contrário, ele será escrito na pasta de envio de correio. Ou edite manualmente o arquivo de configuração, como segue.

Na seção de componentes de seu common / main-local.php

 'mail' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@backend/mail', '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' => 'username@gmail.com', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ], ], 

No seu Controlador

  \Yii::$app->mail->compose('your_view', ['params' => $params]) ->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail']) ->setTo('to_email@xx.com') ->setSubject('This is a test mail ' ) ->send(); 

Isso deve funcionar! Espero que isso ajude você!

Você não precisa usar o transporte SMTP com o swiftmailer, remova apenas 'useFileTransport' => true no arquivo de configuração ( app/config/web.php no modelo básico) e os e-mails fluirão.

Dê uma olhada nos documentos:

http://www.yiiframework.com/doc-2.0/ext-swiftmailer-index.html

Aviso: esta opção não está mais disponível, já que a Mandrill foi comprada pela Mailchimp

Às vezes, pode haver problemas com o uso do SwiftMailer não dependente de você. Como quando usei o servidor de e-mail mail.ru. Encontrei solução na comunidade laravel e implementei em Yii2.

Você pode usar um serviço alternativo como https://mandrillapp.com/ (email 12k por mês, 250 em uma hora é grátis) e configurando-se como abaixo:

Laravel community / setup mail with mandrill

 'host' => 'smtp.mandrillapp.com', 'username' => 'user@domain.name', 'password' => 'oDLKswXZIkry8634f1jCDg', // new generated API key by mandrill 'port' => '587', 'encryption' => 'tls', 

Se você estiver usando o email do Gmail, você também pode enfrentar problemas de segurança. Você pode evitar a segurança ao permitir que o aplicativo use sua conta do Gmail.

Se você fez login com o Google use links abaixo:

https://www.google.com/settings/security/lesssecureapps

Espero que ajude alguém

Se você estiver usando o modelo básico, então você precisaria adicionar

 'viewPath' => '@app/mail', 

para a configuração

Na verdade, você precisa usar o mail de configuração do remetente em vez do correio .

 'components' => [ ... 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'localhost', 'username' => 'username', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ], ... 

],