You are viewing revision #1 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version.
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 ¶
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.