Laravel - Envío de correo electrónico

Laravel usa una biblioteca gratuita rica en funciones SwiftMailerpara enviar correos electrónicos. Usando la función de biblioteca, podemos enviar correos electrónicos fácilmente sin demasiados problemas. Las plantillas de correo electrónico se cargan de la misma forma que las vistas, lo que significa que puede utilizar la sintaxis Blade e inyectar datos en sus plantillas.

La siguiente tabla muestra la sintaxis y los atributos de send función -

Sintaxis enviar vacío (cadena | matriz $ vista, matriz $ datos, Cierre | cadena $ devolución de llamada)
Parámetros
  • $ view (string | array): nombre de la vista que contiene el mensaje de correo electrónico

  • $ data (matriz): matriz de datos para pasar a la vista

  • $ callback: una devolución de llamada de cierre que recibe una instancia de mensaje, lo que le permite personalizar los destinatarios, el asunto y otros aspectos del mensaje de correo

Devoluciones nada
Descripción Envía correo electrónico.

En el tercer argumento, el cierre de $ callback recibió la instancia del mensaje y con esa instancia también podemos llamar a las siguientes funciones y alterar el mensaje como se muestra a continuación.

  • $ mensaje → asunto ('Bienvenido al punto de tutoriales');
  • $ mensaje → de ('[email protected]', 'Sr. Ejemplo');
  • $ mensaje → a ('correo electró[email protected]', 'Sr. Ejemplo');

Algunos de los métodos menos comunes incluyen:

Para adjuntar o incrustar archivos, puede utilizar los siguientes métodos:

  • $ mensaje → adjuntar ('ruta / a / adjunto.txt');
  • $ mensaje → incrustar ('ruta / al / archivo adjunto.jpg');

El correo se puede enviar como HTML o texto. Puede indicar el tipo de correo que desea enviar en el primer argumento pasando una matriz como se muestra a continuación. El tipo predeterminado es HTML. Si desea enviar correo de texto sin formato, utilice la siguiente sintaxis.

Sintaxis

Mail::send([‘text’=>’text.view’], $data, $callback);

En esta sintaxis, el primer argumento toma una matriz. Utilizartext como el nombre de clave de la vista como valor de la clave.

Ejemplo

Step 1 - Ahora le enviaremos un correo electrónico desde la cuenta de Gmail y para eso necesita configurar su cuenta de Gmail en el archivo de entorno de Laravel - .envarchivo. Habilite la verificación en dos pasos en su cuenta de Gmail y cree una contraseña específica para la aplicación y luego cambie los parámetros .env como se muestra a continuación.

.env

MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls

Step 2 - Después de cambiar el .env file ejecute los dos comandos siguientes para borrar la caché y reiniciar el servidor Laravel.

php artisan config:cache

Step 3 - Crea un controlador llamado MailController ejecutando el siguiente comando.

php artisan make:controller MailController --plain

Step 4 - Después de una ejecución exitosa, recibirá el siguiente resultado:

Step 5 - Copie el siguiente código en

app/Http/Controllers/MailController.php archivo.

app/Http/Controllers/MailController.php

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class MailController extends Controller {
   public function basic_email() {
      $data = array('name'=>"Virat Gandhi");
   
      Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Basic Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Basic Email Sent. Check your inbox.";
   }
   public function html_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel HTML Testing Mail');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "HTML Email Sent. Check your inbox.";
   }
   public function attachment_email() {
      $data = array('name'=>"Virat Gandhi");
      Mail::send('mail', $data, function($message) {
         $message->to('[email protected]', 'Tutorials Point')->subject
            ('Laravel Testing Mail with Attachment');
         $message->attach('C:\laravel-master\laravel\public\uploads\image.png');
         $message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
         $message->from('[email protected]','Virat Gandhi');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}

Step 6 - Copie el siguiente código en resources/views/mail.blade.php archivo.

resources/views/mail.blade.php

<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>

Step 7 - Agregue las siguientes líneas en app/Http/routes.php.

app/Http/routes.php

Route::get('sendbasicemail','[email protected]_email');
Route::get('sendhtmlemail','[email protected]_email');
Route::get('sendattachmentemail','[email protected]_email');

Step 8 - Visite la siguiente URL para probar el correo electrónico básico.

http://localhost:8000/sendbasicemail

Step 9- La pantalla de salida se verá así. Revise su bandeja de entrada para ver la salida de correo electrónico básica.

Step 10 - Visite la siguiente URL para probar el correo electrónico HTML.

http://localhost:8000/sendhtmlemail

Step 11- La pantalla de salida se verá así. Revise su bandeja de entrada para ver la salida del correo electrónico html.

Step 12 - Visite la siguiente URL para probar el correo electrónico HTML con archivo adjunto.

http://localhost:8000/sendattachmentemail

Step 13 - Puedes ver la siguiente salida

Note - En el MailController.phpfile la dirección de correo electrónico en el método from debe ser la dirección de correo electrónico desde la cual puede enviar la dirección de correo electrónico. Generalmente, debe ser la dirección de correo electrónico configurada en su servidor.