Enviar correos en Laravel 8

Enviar correos en Laravel 8

Veremos cómo enviar correos en Laravel 8 y haremos uso de una herramienta llamada Mailtrap para testear los correos enviados, lo haremos paso a paso para ir comprendiendo el proceso, ¿necesitas enviar correos con Laravel? Aquí lo analizaremos.

Muchas veces, por no decir casi siempre, necesitamos enviar correos desde nuestro proyecto web.

Existen muchas formas de hacerlo según el entorno en el que estemos trabajando.

Si estamos programando por ejemplo en PHP puro es de una forma, si estamos en un framework es de otra forma.


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

Al final siempre es una funcionalidad muy útil y solicitada por los usuarios así que es necesario aprender a hacerlo.

Para enviar correos en Laravel 8 existe una opción muy útil que es la que veremos hoy.

Mailtrap

También haremos uso de Mailtrap, una herramienta que funciona como falso SMTP para testear nuestros correos.

Por favor ve a Mailtrap y crea una cuenta para el proceso de hoy, no es necesario pero si muy recomendable.

Una vez allí creamos un proyecto / inbox y accedemos a él y obtenemos nuestras credenciales haciendo clic en Show Credentials.

enviar correos en laravel 8 - 1

Copiamos estos valores pues los ocuparemos más adelante.

Enviar correos en Laravel 8

Para iniciar necesitamos un proyecto Laravel iniciado o de lo contrario inicia uno nuevo.

Nos vamos a nuestro archivo .env y editamos / agregamos la siguiente información para los correos:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME= 
MAIL_PASSWORD= 
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=

En este paso agregamos la información de Mailtrap que obtuvimos anteriormente o de lo contrario agregamos ya información real.

Generamos la clase Mailable con el siguiente comando:

php artisan make:mail Email --markdown=Email.enviar

Nos generará una clase en app/Mail/Email.php.

Editamos nuestro código así:

public $mailData;

public function __construct($mailData){
    $this->mailData = $mailData;
}

public function build(){
        return $this
            ->subject('Asunto')
            ->markdown('Email.enviar')
            ->with('mailData', $this->mailData);
}

Ahora creamos un controlador para enviar nuestros correos:

php artisan make:controller EmailController

Nos creará el controlador en app/Http/Controllers/EmailController.php.

class EmailController extends Controller {
    
    public function enviarEmail() {
        $email = 'correo a enviar';
   
        $mailData = [
            'title' => 'Titulo',
            'url' => 'https://'
        ];
  
        Mail::to($email)->send(new Email($mailData));
   
        return response()->json([
            'message' => 'Email enviado'
        ], Response::HTTP_OK);
    }

}

Creamos la ruta para enviar nuestro correo en routes/web.php.

Route::get('/enviar-email', [EmailController::class, 'enviarEmail']);

También tendremos la plantilla de correo creada en resources/views/Email/enviar.blade.php.

@component('mail::message')
# {{ $mailData['titulo'] }}

contenido del correo...

@component('mail::button', ['url' => $mailData['url'], 'color' => 'success'])
Boton
@endcomponent

Saludos,<br>
{{ config('app.name') }}
@endcomponent

Iniciamos nuestro proyecto y probamos nuestra url en http://localhost:8000/send-email

Deberíamos ver nuestro correo en Mailtrap o en el servidor que configuraste en nuestro archivo .env.

Por supuesto en nuestro controlador de Email podríamos obtener más información para enviar en el correo como nombres de usuario, nombres de proyecto, etc… y pasarla mediante nuestro objeto mailData.

También aquí podremos establecer la dirección de correo a donde se enviará nuestro correo.

Si esta información te ha sido de utilidad no olvides compartirla en tus redes sociales y dejarnos un comentario en la sección de abajo si tienes cualquier duda relacionada con este tema, será un placer ayudarte.

¡Hasta luego!

 

Clic para valorar esta información
[Total: 1 Promedio: 5]