Enviar correos electrónicos en Laravel usando SMTP

Enviar correos electrónicos en Laravel usando SMTP
Enviar un correo electrónico es un requisito común para cualquier aplicación web. Algunos usos generales de enviar correos electrónicos incluyen verificar el registro del usuario, obtener comentarios de los usuarios, proporcionar opciones para contactar al administrador del sitio, etc. El marco de Laravel contiene varios paquetes para enviar correos electrónicos del proyecto Laravel. SMTP, Mailgun, Matcharket y Amazon SES se usan en Laravel para enviar correos electrónicos simples, transaccionales y a granel. Laravel tiene una biblioteca de envío por correo electrónico llamada Swiftmailer para enviar un correo electrónico con una plantilla de correo electrónico. Este tutorial le muestra cómo enviar un correo electrónico simple usando SMTP.

Configuración y configuración de SMTP

Abre el .envidia Archivo desde la carpeta raíz del proyecto Laravel y configure la configuración de acuerdo con su cuenta de Gmail. Debes habilitar el "Aplicación menos seguraLa opción de su cuenta de Gmail para enviar un correo electrónico utilizando el servidor Gmail SMTP.

Mail_mailer = SMTP
Mail_host = smtp.gmail.comunicarse
Mail_port = 465
Mail_username = your_email_address
Mail_password = your_password
Mail_encryption = ssl

***Nota:

Puede recibir el error de autenticación SMTP al enviar correos electrónicos utilizando el servidor de cuenta SMTP Gmail. Abre el Streambuffer.php Archivo desde la siguiente ubicación.

/var/www/html/laravelpro/vendor/swiftmailer/swiftmailer/
lib/classes/swift/transport/streambuffer.php

Buscar y reemplazar la línea 259 con la siguiente línea para autenticar el servidor SMTP Gmail.

$ options ['ssl'] = array ('verify_peer' => false, 'verify_peer_name' => false,
'allow_self_signed' => true);

Enviar correos electrónicos usando SMTP

Realice los siguientes pasos para enviar correo electrónico utilizando el formulario de contacto creando un controlador, vista y clase de correo.

Pasos:

Ejecute el siguiente comando desde el terminal para crear Correo electrónico Controller Para mostrar el formulario de contacto y enviar un correo electrónico utilizando la clase de correo de Laravel.

$ PHP Artisan Make: Controller Correo electrónico Controller

Ejecute el siguiente comando para crear una clase de correo nombrada envío. Esto creará la clase bajo el Aplicación \ correo carpeta.

$ PHP Artisan Make: correo electrónico SendingEmail

Crear un archivo de vista llamado Enviar correo electrónico.cuchilla.php con el siguiente código para mostrar el formulario de contacto.




Contáctanos el formulario












Contáctenos




@if (Count ($ errores)> 0)



    @ForEach ($ errores-> all () como error $)
  • $ error

  • @endforeach


@terminara si
@if ($ mensaje = session :: get ('éxito'))


$ mensaje

@terminara si



csrf_field ()


















Abierto Correo electrónico Controller y modifique el código con el siguiente código. El Correo fachada y envío Las clases de correo se importan al comienzo del archivo. Aquí el índice() El método cargará el archivo de vista en el navegador para mostrar el formulario de contacto. Después de enviar el formulario, el enviar() se llamará a método. Este método validará el formulario utilizando las reglas de validación. El $ datos La matriz se usa para enviar los valores del nombre y mensaje campos en el envío clase. A continuación, el correo electrónico se envía utilizando el Correo fachada. Debe establecer una dirección de correo electrónico válida del receptor en el a() función antes de ejecutar el código. Si el correo electrónico se envía correctamente, entonces se imprimirá un mensaje de éxito.

APLICACIÓN DEL PAGO DE NAME \ HTTP \ Controllers;
use iluminar \ http \ solicitud;
use Illuminate \ Support \ facades \ mail;
use la aplicación \ mail \ sendingEmail;
Class CORRAGECONTROLLER extiende el controlador

índice de funciones ()

Vista de retorno ('Correo electrónico');

Función Enviar (solicitud $ solicitud)

$ this-> validate ($ solicitud, [
'Nombre' => 'requerido',
'correo electrónico' => 'requerido | correo electrónico',
'Mensaje' => 'requerido'
]);
$ data = array (
'nombre' => $ request-> name,
'mensaje' => $ request-> mensaje
);
Mail :: a ('Dirección de correo electrónico del receptor')-> Enviar (nuevo SendingEmail ($ data));
return back ()-> con ('éxito', 'gracias por contactarnos!');

Abre el envío clase y modifique el código con el siguiente código. El sujeto de correo electrónico se define dentro del construir() método y el email_template La vista se usa para formatear el contenido de correo electrónico, creado en el siguiente paso. Los valores pasaron del Correo electrónico Controller se almacenan en el $ correo electrónico objeto y se pasan en el email_template vista.

Aplicación de espacio de nombres \ mail;
use iluminate \ bus \ queeable;
use iluminar \ contracts \ queue \ deberíaqueue;
use iluminate \ mail \ mailable;
usar iluminado \ queue \ SerializesModels;
clase SendingEmail se extiende por correo

Use queable, SerializeModels;
/**
* Crear una nueva instancia de mensaje.
*
* @return void
*/
Public $ correos electrónicos;
función pública __construct ($ correos electrónicos)

$ this-> correos electrónicos = $ correos electrónicos;

/**
* Construir el mensaje.s
*
* @return $ esto
*/
Función pública Build ()

devolver $ this-> temas ('Mensaje del visitante')
-> Ver ('Correo electrónico_template')
-> con ('correos electrónicos', $ this-> correos electrónicos);

Crear el archivo de vista de plantilla con nombre email_template.cuchilla.php con el siguiente código para enviar el correo electrónico formateado al remitente. Los valores pasaron del envío La clase se usa en esta plantilla.

Hola,
Soy $ correos electrónicos ['name']


Mi consulta es sobre el siguiente tema:


$ correos electrónicos ['Message'].


Será útil si me das respuesta pronto.Gracias.

Ahora, abra el web.php archivo y agregue el siguiente código de ruta para abrir el formulario de contacto y enviar el correo electrónico.

Ruta :: get ('/contact', 'ickontroller@index');
Ruta :: post ('/sendEmail/send', 'emailController@send');

Ejecute la siguiente URL desde el navegador para cargar el formulario de contacto.

http: // localhost/laravelpro/public/contact

Llene el formulario y haga clic en el Enviar mensaje botón para enviar el contenido del formulario al enviar() método del Correo electrónico Controller clase.

Si el correo electrónico se envía correctamente, obtendrá el mensaje de éxito, como se muestra en la siguiente imagen.

Ahora, abra la cuenta de Gmail que solía enviar un correo electrónico en el enviar() método del Correo electrónico Controller clase. Si abre el correo electrónico, obtendrá el siguiente contenido de correo electrónico, generado utilizando un email_template ver archivo.

Tutorial de video

Conclusión

Existen múltiples formas en el marco de Laravel para enviar un correo electrónico. La forma más simple y fácil de enviar correos electrónicos en Laravel se muestra en este tutorial. Si tiene una cuenta de Gmail, puede enviar fácilmente un correo electrónico siguiendo los pasos que se muestran en este tutorial. El servidor SMTP Gmail se usa aquí para enviar un correo electrónico, y la tarea de envío de correo electrónico se prueba ejecutando el código desde el servidor local. Este tutorial muestra solo tareas de envío de correo electrónico con formato HTML. También puede realizar otras tareas, como archivos adjuntos, nombre del remitente, etc., utilizando otros métodos de la Correo clase.