Cómo enviar correos con Yii2
Cómo enviar correos con Yii2
Aprenderás a como enviar correos utilizando Yii.
Instalación de widget
Si utilizas alguna versión antigua de Yii2 y no tienes instalado el componente lo puedes instalar de la siguiente manera.Instalando mediante composer.
"yiisoft/yii2-swiftmailer": "~2.1.0"
php composer.phar require --prefer-dist yiisoft/yii2-swiftmailer
Configuración
Para poder utilizar este componente asegúrate de tener habilitado el componente en el archivo de configuración /config/web.php de la siguiente manera.
'components' => [
'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' => true
],
],
'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' => true
],
],
Nota importante:
En una instalación nueva observarás que se encuentra habilitada ésta opción que está en negrita. "'useFileTransport' => true", con esta opción si está habilitada, los correos que se envíes quedarán guardado en la carpeta: '/runtimes/mail' correspondiente a la carpeta de tu proyecto, por lo tanto cuando envies correos y esta opción esté habilitada, todos tus correos se quedarán en esa carpeta con la extensión ".eml", esto es para que lo puedas probar para fines de desarrollo en el caso cuando no tienes una cuenta de correo real y obviamente para no te tilden como spam.
'components' => [
'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' => true
],
],
'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' => true
],
],
Una vez que tengas los datos de correo reales, debes asegurarte de comentar esta línea para que funcione, de lo contrario no funcionará.
Enviar un correo desde tu propio servidor
Yii::$app->mailer->compose()
->setFrom('admin@tudominiodejemplo.com')
->setTo('destinatario@tudominiodejemplo.com')
->setSubject('Prueba desde mi PC')
->send();
->setFrom('admin@tudominiodejemplo.com')
->setTo('destinatario@tudominiodejemplo.com')
->setSubject('Prueba desde mi PC')
->send();
Para asegurar que los correos lleguen a su destino yo te recomiendo usar el método de envío mediante un servidor SMTP.
Enviar un correos desde un servidor SMPT
Para enviar correos vía SMPT es necesario agregar la siguiente configuración dentro de la sección del componente de "mailer".
Los datos de usuario, password, host, puerto, y modo de encriptación, debes pedirlo a tu proveedor de hosting, ésta será la cuenta de correo donde se enviarán tus correos.
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'tudominiodejemplo.com',
'username' => 'soporte@tudominiodejemplo.com',
'password' => 'passwordsecreto',
'port' => '465',
'encryption' => 'SSL',
],
// 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' => true
],
Una vez que tengas los datos de correo reales, debes asegurarte de comentar esta línea "//'useFileTransport' => true" para que funcione, de lo contrario no mandará los correos, sino que los guardara en la carpeta /runtimes/mail'
Ejemplo de envío de correo con SMTP:
Yii::$app->mailer->compose()
->setFrom('admin@tudominiodejemplo.com')
->setTo('destinatario@gmail.com')
->setSubject('Prueba desde mi PC')
->setHtmlBody('<h1>Este es mi primer correo enviado con Yii2')
->send();
->setFrom('admin@tudominiodejemplo.com')
->setTo('destinatario@gmail.com')
->setSubject('Prueba desde mi PC')
->setHtmlBody('<h1>Este es mi primer correo enviado con Yii2')
->send();
Con éste ejemplo ya debe de llegarte el correo.
No importa si tu repositorio esté instalado localmente debe funcionar ya que estas utilizando un cliente de correo SMTP.
No importa si tu repositorio esté instalado localmente debe funcionar ya que estas utilizando un cliente de correo SMTP.
Nota importante. Dependiendo de tu proveedor de correo requeriras puerto especiales o permisos especiales, para mas información consulta la información tecnica de tu proveedor de correo electrónico.
Fuentes:
https://github.com/yiisoft/yii2-swiftmailer
https://www.yiiframework.com/doc/guide/2.0/en/tutorial-mailing
https://www.yiiframework.com/extension/yiisoft/yii2-swiftmailer/doc/api/2.1/yii-swiftmailer-mailer
Comentarios
Publicar un comentario