Envío de correos con Laravel y Exchange (office 365)

Que tal, en esta ocasión veremos como enviar correos con Laravel usando el servicio de correo empresarial de Microsoft (Exchange).

Para esto he creado un proyecto llamado mail.

Vamos a dirigirnos a al archivo donde se almacenan las variable de entorno, el .env

Reemplazaremos los valores de la sección mail por estos

 MAIL_DRIVER=smtp
 MAIL_HOST=smtp.office365.com
 MAIL_PORT=587
 MAIL_USERNAME=tu_email@tu_empresa.com
 MAIL_PASSWORD=KublaiKan@100
 MAIL_ENCRYPTION=tls

El host y el puerto son los que usamos para conectarnos a nuestra cuenta de correo empresarial, debes cambiar los datos de Mail_username y Mail_password por los tuyos (recuerda que estos parámetros solo aplican para el servicio empresarial de Office 365, si quieres usar una cuenta de Gmail deberás agregar sus valores).

Después de cambiar las variables de .env es necesario limpiar la cache para que laravel tome los nuevos valores, esto lo hacemos con el comando

php artisan config:cache

Ahora nos dirigimos a la carpeta config de Laravel, y abrimos el archivo mail.php

Vamos a modificar el archivo para indicarle que tome como referencia las variables del archivo .env que actualizamos anteriormente.

Deberia quedar de la siguiente manera:

'driver' => env('MAIL_DRIVER'),
'host' => env('MAIL_HOST'),
'port' => env('MAIL_PORT'),
'from' => [
        'address' => env('MAIL_FROM_ADDRESS'),
        'name' => env('MAIL_FROM_NAME'),
    ],
'encryption' => env('MAIL_ENCRYPTION'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),

Ahora vamos a crear un controlador para gestionar el envio, lo llamaré MailController

php artisan make:controller MailController --resource

Abrimos nuestro controlador y en la función index colocaremos el siguiente code:

 $data = array('name'=>"Hola Mundo");
        $template_path = 'email_template';

        Mail::send(['html'=> $template_path ], $data, function($message) {
            $message->to('destinatario@outlook.com', 'Receiver Name')->subject('Titulo del correo');
            $message->from('mi_cuenta@mi_empresa.com','Hola Mundo');
        });

        return "El correo ha sido enviado";

Recuerda incluir la clase Mail en este controlador (use Mail;)

Lo que hace este code es llamar a una vista donde se incluye el cuerpo de correo; el nombre de la vista que debemos crear es email_template así que vamos allá.

Agreguen el codigo HTML que deseen en el template

El siguiente paso es crear la ruta en el archivo web.php para poder ejecutar el controlador que enviará el correo:

Route::resource('mail','MailController');
Agregando la ruta

Vamos a acceder a esa ruta y ver la magia.

Por último revisemos la bandeja de entrada (para este ejemplo, de outlook)

Nota: Si aparece el siguiente error: Filed loading cafile stream:’c:\xampp\apache\bin\curl-ca-bundle.crt’ deben descargarse este certificado e instalarlo en la carpeta c:\xampp\apache\bin\

Related Posts Plugin for WordPress, Blogger...

publicidad

3 Comments

  1. Excelente, amigo muchas gracias por compartir tus conocimientos, ¿como puedo pasar variables a la vista, para poderlos enviar por el correo?…

    Saludos y muchas gracias!

    1. Que tal Suleyma, eso dependería de cada proveedor, algunos establecen limites para la cantidad de correos que pueden salir por hora. Realmente desconozco si la versión profesional del correo de Microsoft tiene esas limitantes. En cualquier caso para esa cantidad de correos al día creo que lo mejor seria usar algún servicio especializado como mailjet o mailChimp.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.