7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

Cómo Enviar Emails en Laravel

Scroll to top
Read Time: 9 mins

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

En este artículo, vamos a explorar la API Mail en el marco de trabajo web Laravel. Laravel saca ventaja de la popular librería SwiftMailer, la cuál es sencilla de usar y viene con una variedad de controladores de email de los cuáles elegir. En las etapas posteriores del artículo, iremos en una demostración a profundidad de los conceptos discutidos en la primera mitad del artículo.

Configurando los Prerequisitos.

Laravel implementa un envoltorio encima de la librería SwiftMailer que hace la administración de email muy sencilla de configurar y usar al mismo tiempo. Puedes encontrar los ajustes de correo por defecto en config/mail.php.

Cuando se trata de enviar emails, Laravel soporta diferentes controladores de los cuáles elegir. Como puedes ver, el MAIL_DRIVER por defecto está establecido a smtp.

Si vas a usar el controlador smtp para enviar correos entonces también se requiere establecer otros ajustes relacionados como MAIL_HOSTMAIL_PORTMAIL_ENCRYPTIONMAIL_USERNAME, y MAIL_PASSWORD.

Por el otro lado, si vas a usar el controlador sendmail, entonces quieres asegurar que la ruta de sistema sendmail está establecida al valor correcto en el archivo config/mail.php.

También puedes establecer la dirección from que será usada mientras se mandan correos bajo la llave from. Y finalmente, si quieres usar generación de correo basado en marcado, puedes establecer esos ajustes bajo la llave markdown.

La cereza del pastel es que también podrías usar proveedores de correo de terceros como Mailgun, Mandrill, SES, y SparkPost. Si estás usando uno de esos servicios, necesitas asegurar que estableces los ajustes correspondientes en el archivo config/services.php.

Así que esa fue una introducción básica a los ajustes relacionados de API en Laravel. De la siguiente sección en adelante, iremos a través de un ejemplo personalizado que te muestra cómo enviar emails.

Crea la Clase Mailable

En esta sección, crearemos la clase mailable, la cuál será usada para enviar emails. La clase mailable es responsable de enviar emails usando un mailer que es configurado en el archivo config/mail.php. De hecho, Laravel ya proporciona un comando artisan que nos permite crear una plantilla base.

Eso debería crear una plantilla de email en blanco en app/Mail/DemoEmail.php, como se muestra en el siguiente código.

Reemplacemos los contenidos de ese archivo con lo siguiente.

Hay dos métodos importantes que la clase mailable generalmente implementa---__construct y build. El método __construct es usado para inicializar objetos que se supone debes usar en la platilla de correo. Por el otro lado, el método build es usado para iniciar valores más específicos de email como de, vista de plantilla, adjuntos y similares.

En nuestro caso, hemos pasado el objeto $demo como un argumento de constructor, y está asignado a la propiedad pública demo.

En el método build, hemos iniciado una configuración específica de email.

  • El from es usado para establecer una dirección de correo que será usada como una dirección de remitente.
  • Usando el método view, puedes establecer la plantilla de email que será usada mientras se envía un email usando este mailable. En nuestro caso, lo establecimos a mails.demo, y este significa que necesitas crear un archivo de vista de plantilla en resources/views/mails/demo.blade.php.
  • Después, el método text es usado para establecer la versión de texto plano de una plantilla de email.
  • Como acabamos de discutir, el método __construct es usado para establecer objetos que serán usados en la plantilla de email, también puedes usar el método with que te permite establecer los datos de vista de un mensaje.
  • Después, hemos usado el método attach para adjuntar una imagen con un mensaje.

Por supuesto, necesitamos crear plantillas de email que se supone usaremos mientras enviamos emails. Continua y crea un archivo resources/views/mails/demo.blade.php como se muestra en el siguiente código.

También, creemos la versión de texto plano de ese archivo en resources/views/mails/demo_plain.blade.php.

Así que esa fue la clase mailable a tu disposición, y no hemos terminado aún ya que necesitamos usar la fachada Mail para de hecho enviar correos. En la siguiente sección, exploraremos cómo puedes usar la Fachada Mail para enviar emials usando la clase Mailable DemoEmail que acabamos de crear en esta sección.

Terminando

En esta sección, crearemos un ejemplo para demostrar cómo puedes usar la clase Mailable que fue creada en la última sección.

Creemos un archivo controlador en app/Http/Controllers/MailController.php con los siguientes contenidos.

Es importante notar que hemos incluido la Fachada Illuminate\Support\Facades\Mail que será usada para enviar un email. En el método send, la siguiente declaración es responsable de enviar un correo inicializando el Mailable App\Mail\DemoEmail en el primer lugar.

El método to de la Fachada Illuminate\Support\Facades\Mail devuelve una instancia de la clase \Illuminate\Mail\PendingMail, que ya contiene un mailer apropiado configurado en el archivo config/mail.php.

Y finalmente, usamos el método send de la clase \Illuminate\Mail\PendingMail que envía un email de verdad.

Para probarlo, agreguemos una ruta asociada en el archivo routes/web.php.

Y con eso en su lugar, puedes ejecutar la URL http://tu-sitio-laravel.com/mail/send para ver si funciona como se espera.

Por otro lado, si quieres probar tus plantillas de email rápidamente, sin enviar emails de verdad, hay una provisión en Laravel que te permite registrar todos los correos de salida.

Para lograr eso, necesitas establecer el valor de MAIL_DRIVER a log en el archivo config/mail.php. Después, podrías ejecutar la URL antes mencionada e inspeccionar el archivo de registro para revisar si la plantilla de email se registró ahí.

Si todo sale bien, deberías ver un email siendo registrado al archivo storage/logs/laravel.log.

Eso es prácticamente todo en cuanto a la característica de correo respecta en Laravel, y eso concluye este artículo también.

Conclusión

Hoy recorrimos la API de correo que viene integrada en Laravel, y esta también soporta una variedad de controladores.

Comenzando con conceptos básicos, implementamos la clase mailable que es un elemento esencial en la API de correo en Laravel a medida que avanzamos. Al final, también probamos la clase mailable creando un controlador personalizado para ver si funcionaba de verdad.

Si apenas estás comenzando con Laravel o estás buscando expandir tu conocimiento, sitio o aplicación con extensiones, tenemos una variedad de cosas que puedes estudiar en Envato Market.

¡Me encantaría conocer tu retroalimentación en la forma de peticiones y comentarios usando la sección de abajo!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.