example php yii swiftmailer yii2

php - send email yii2 example



Cómo usar el swiftMailer en Yii2 (5)

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 entender.

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

Preparar

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 . Gracias.

PD: ajusté los registros de dominio MX, DKIM, SPF agregados.

UPD (alguna respuesta) :

El correo electrónico que se pasa en el campo "De", se coloca por defecto en el campo de "Ruta de retorno", tiene que ser la dirección existente . Algunos proveedores no permiten el envío de correos electrónicos desde direcciones de correo electrónico inexistentes.


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 de salida de correo. O edite manualmente el archivo de configuración de la siguiente manera.

En la sección de componentes de tu 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 tu 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 ayudará!


Si estás usando la plantilla básica, entonces necesitarías agregar

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

a la configuración



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

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

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

comunidad laravel / correo de configuración 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 problemas de seguridad. Puede desactivar la seguridad al permitir que la aplicación use su cuenta de Gmail.

Si has iniciado sesión con google usa los enlaces a continuación:

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

Espero que ayude a alguien


En realidad, tienes que usar el programa de envío de claves de configuración en lugar del correo .

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

],