Funcionalidad de correo en Laravel
La funcionalidad de correo de Laravel se construye sobre Symfony Mailer y admite drivers como SMTP, Mailgun, Postmark, Resend, Amazon SES o sendmail.El antiguo SwiftMailer usado en versiones anteriores está discontinuado. Desde Laravel 9 se utiliza Symfony Mailer.
config/mail.php. Puedes cambiar el driver con el archivo .env.
Crear una clase Mailable
En Laravel, cada correo que envía la aplicación se representa como una clase “Mailable”. Genera la clase con el comando Artisanmake:mail.
app/Mail/.
Configuración del Mailable
La clase Mailable generada tiene tres métodos:envelope(), content() y attachments().
Configurar el remitente
Indica el remitente enenvelope().
config/mail.php, puedes omitir la indicación en cada Mailable.
Configurar el cuerpo del correo
Concontent() indicas la plantilla Blade. Los datos que asignes a propiedades public en el constructor estarán disponibles automáticamente en la plantilla.
resources/views/mail/orders/shipped.blade.php).
with. En ese caso, marca las propiedades como protected o private.
Envío del correo
Conto() de la fachada Mail indicas el destinatario y con send() envías el correo.
mailer().
Envío con cola
Como el envío de correo afecta al tiempo de respuesta, se recomienda enviarlo en segundo plano con una cola.ShouldQueue en la clase Mailable, incluso al llamar a send() se encola siempre.
Indicar la conexión y el nombre de la cola con atributos PHP
Con atributos de PHP puedes indicar directamente en la clase Mailable la conexión y el nombre de la cola. En lugar de encadenaron()->queue(), lo configuras de forma declarativa a nivel de clase.
emails de la conexión SQS.
Crear un correo con Markdown
Los correos en Markdown te permiten aprovechar las plantillas HTML responsivas y elegantes que ofrece Laravel.Generar un Mailable con Markdown
Añade la opción--markdown al generar el Mailable.
markdown en content().
Escritura de la plantilla Markdown
Crea el cuerpo del correo con los componentes Blade que ofrece Laravel.Previsualización del correo
Si devuelves una instancia de Mailable desde una ruta, puedes previsualizar el correo en el navegador. Muy útil durante el desarrollo.Correos en desarrollo local
Para evitar envíos accidentales en producción, en desarrollo conviene usar herramientas como Mailpit.Laragon o Laravel Herd incluyen Mailpit por defecto.
Con el driver
log, el contenido del correo se registra en el archivo de log. Es la opción más sencilla si solo quieres comprobar el envío.