Cómo usar SwiftMailer en Yii2


Finalmente no puedo entender cómo usar la extensión SwiftMailer en Yii2. A juzgar por eso sobre este tema no encontré preguntas, la tarea es trivial, pero hasta el final no pude entenderlo.

Hay ejemplos que no describen con más detalle todo el ciclo de envío de la carta o no entiendo algo: (

Configuración

    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();

Quiero recibir un ejemplo de trabajo concreto. Agradecer.

P. S. I registros de dominio ajustados MX, DKIM, SPF añadido.

UPD (alguna respuesta):

Correo electrónico que se pasa en el campo "From", se coloca por defecto en el campo de "Return-path", tiene que ser la dirección existente. Algunos proveedores no permitir el envío de correo desde direcciones de correo electrónico inexistentes.

Author: frops, 2014-07-28

5 answers

Asegúrese de haber inicializado su aplicación en el entorno de producción para enviar correos electrónicos desde su aplicación,de lo contrario se escribirá en la carpeta mailoutput.O edite manualmente el archivo de configuración como sigue.

En la sección de componentes de su 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' => '[email protected]',
            'password' => 'password',
            'port' => '587',
            'encryption' => 'tls',
            ],
    ],

En su Controlador

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

Esto debería funcionar! ¡Espero que esto te ayude!

 43
Author: Dency G B,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-14 07:17:48

No necesita usar el transporte SMTP con swiftmailer, solo elimine 'useFileTransport' => true en el archivo de configuración (app/config/web.php en la plantilla básica) y los correos fluirán.

Echa un vistazo a los documentos:

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

 9
Author: uselma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-28 06:29:53

Advertencia: Esta opción ya no está disponible, ya que Mandrill fue comprado por Mailchimp

A veces podría haber problemas con el uso de SwiftMailer no depende de usted. Como cuando usé mail.ru servidor de correo electrónico. Encontré la solución en la comunidad laravel e implemend en Yii2.

Puede usar un servicio alternativo como https://mandrillapp.com / (12k correo electrónico por mes, 250 dentro de la hora es gratis) y la configuración de la siguiente manera:

Laravel community / configurar correo con mandril

'host' => 'smtp.mandrillapp.com',
'username' => '[email protected]',
'password' => 'oDLKswXZIkry8634f1jCDg', // new generated API key by mandrill
'port' => '587',
'encryption' => 'tls',

Si está utilizando el correo electrónico de gmail, también puede enfrentar un problema de seguridad. Usted puede swith fuera de seguridad al permitir el uso de la aplicación de su cuenta de gmail.

Si iniciaste sesión con Google, usa los siguientes enlaces:

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

Espero que ayude a alguien

 5
Author: sambua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-15 17:33:16

Si está utilizando la plantilla básica, entonces tendría que agregar

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

A la configuración

 3
Author: Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-14 19:53:12

En realidad, debe usar la clave de configuración mailer en lugar de mail.

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

],

 1
Author: MichalB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-09 10:49:39