Enviar emails en Yii2 es bastante sencillo, ya que usa Swiftmailer para tal propósito.
Configuración ¶
n el archivo de configuración sólo agregue (Si usó composer para crear el proyecto muy probablemente ya tiene las siguientes líneas):
'components' => [
...
'mail' => [
'class' => 'yii\swiftmailer\Mailer',
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'localhost', // ej. smtp.mandrillapp.com o smtp.gmail.com
'username' => 'username',
'password' => 'password',
'port' => '587', // El puerto 25 es un puerto común también
'encryption' => 'tls', // Es usado también a menudo, revise la configuración del servidor
],
],
...
],
Plugins ¶
Si desea usar un Plugin de Swiftmailer (por cierto, muy útiles), puede hacerlo desde el archivo de configuración también. Algo como lo siguiente funcionará:
'transport' => [
'class' => 'Swift_SmtpTransport',
...
'plugins' => [
[
'class' => 'Swift_Plugins_ThrottlerPlugin',
'constructArgs' => [20],
],
],
],
Enviar emails desde la Aplicación ¶
Use el siguiente código para enviar emails desde su aplicación:
Yii::$app->mail->compose()
->setFrom('alguien@dominio.com')
->setTo('email@suservidor.com')
->setSubject('Email enviado desde Yii2-Swiftmailer')
->send();
Plantillas de email avanzadas ¶
En algunos casos, es necesario usar plantillas para generar los emails, en tal caso, sólo necesita hacer algo como lo siguiente:
Yii::$app->mail->compose('@app/mail-templates/email01', [/* Algunos parámetros para la vista */])
->setFrom('desde@dominio.com')
->setTo('email@servidor.com')
->setSubject('Email avanzado desde Yii2-SwiftMailer')
->send();
O, si desea utilizar una plantilla para HTML y otra para emails de texto, puede hacer algo como:
Yii::$app->mail->compose(['html' => '@app/mail-templates/html-email-01', 'text' => '@app/mail-templates/text-email-01'], [/* Parámetros para la vista */])
->setFrom('desde@dominio.com')
->setTo('email@servidor.com')
->setSubject('Email avanzado desde Yii2-SwiftMailer')
->send();
Note que la ruta de la vista puede ser relativa también, tal y como lo haría en un controlador (e.g. ['html' => 'html-email-01']
).
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.