laravel

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 del envío de correos electrónicos incluyen verificar el registro del usuario, obtener comentarios de los usuarios, brindar opciones para contactar al administrador del sitio, etc. El marco de Laravel contiene varios paquetes para enviar correos electrónicos desde el proyecto Laravel. SMTP, Mailgun, Postmark y Amazon SES se utilizan en Laravel para enviar correos electrónicos simples, transaccionales y masivos. Laravel tiene una biblioteca de envío de 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.

Instalación y configuración de SMTP

Abre el .env archivo de la carpeta raíz del proyecto Laravel y configure la configuración de acuerdo con su cuenta de Gmail. Debe habilitar el "Aplicación menos segura”Opción de su cuenta de Gmail para enviar un correo electrónico usando el servidor SMTP de Gmail.

MAIL_MAILER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 465
MAIL_USERNAME = YOUR_EMAIL_ADDRESS
MAIL_PASSWORD = YOUR_PASSWORD
MAIL_ENCRYPTION = ssl

***Nota:

Puede recibir el error de autenticación SMTP mientras envía correos electrónicos utilizando el servidor de cuentas SMTP Gmail. Abre el StreamBuffer.php archivo de la siguiente ubicación.

/ var / www / html / laravelpro / vendor / swiftmailer / swiftmailer /
lib / classes / Swift / Transport / StreamBuffer.php

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

$ opciones ['ssl'] = matriz ('verify_peer' => false, 'verify_peer_name' => false,
'allow_self_signed' => verdadero);

Envío de correos electrónicos mediante 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 la terminal para crear Controlador de correo electrónico para mostrar el formulario de contacto y enviar un correo electrónico usando la clase de correo de Laravel.

$ php artisan make: controlador EmailController

Ejecute el siguiente comando para crear una clase de correo llamada enviando correo electrónico. Esto creará la clase bajo el Aplicación \ Correo carpeta.

$ php artisan make: envío de correo

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




Formulario de contacto












Contáctenos




@if (recuento ($ errores)> 0)



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

  • @endforeach


@terminara si
@if ($ mensaje = Sesión :: get ('éxito'))


$ mensaje

@terminara si



csrf_field ()


















Abierto Controlador de correo electrónico y modificar el código con el siguiente código. La Correo fachada y enviando correo electrónico las clases de correo se importan al principio 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á al método. Este método validará el formulario utilizando las reglas de validación. La $ datos La matriz se utiliza para enviar los valores de la nombre y mensaje campos en el enviando correo electrónico clase. A continuación, el correo electrónico se envía mediante el Correo fachada. Debe establecer una dirección de correo electrónico válida del destinatario en el a() función antes de ejecutar el código. Si el correo electrónico se envía correctamente, se imprimirá un mensaje de éxito.

espacio de nombres App \ Http \ Controllers;
use Illuminate \ Http \ Request;
use Illuminate \ Support \ Facades \ Mail;
use App \ Mail \ sendEmail;
clase EmailController extiende Controller

índice de función ()

vista de retorno ('emailsend');

función enviar (Solicitar $ solicitud)

$ this-> validar ($ solicitud, [
'nombre' => 'requerido',
'email' => 'obligatorio | email',
'mensaje' => 'requerido'
]);
$ datos = matriz (
'nombre' => $ solicitud-> nombre,
'mensaje' => $ solicitud-> mensaje
);
Correo :: a ('Dirección de correo electrónico del receptor') -> enviar (nuevo correo electrónico de envío ($ datos));
return back () -> with ('success', 'Gracias por contactarnos!');

Abre el enviando correo electrónico class y modifique el código con el siguiente código. El asunto del correo electrónico se define dentro del construir() método y el email_template La vista se utiliza para formatear el contenido del correo electrónico, creado en el siguiente paso. Los valores pasados ​​del Controlador de correo electrónico se almacenan en el $ correo electrónico objeto y se pasan en el email_template vista.

espacio de nombres App \ Mail;
use Illuminate \ Bus \ Queueable;
use Illuminate \ Contracts \ Queue \ ShouldQueue;
use Illuminate \ Mail \ Mailable;
use Illuminate \ Queue \ SerializesModels;
clase de envío de correo electrónico se extiende Mailable

use Queueable, SerializesModels;
/ **
* Crear una nueva instancia de mensaje.
*
* @return void
* /
correos electrónicos $ públicos;
función pública __construct ($ correos electrónicos)

$ this-> emails = $ emails;

/ **
* Construye el mensaje.s
*
* @return $ esto
* /
función pública build ()

return $ this-> subject ('Mensaje del visitante')
-> ver ('email_template')
-> con ('correos electrónicos', $ esto-> correos electrónicos);

Cree el archivo de vista de plantilla llamado email_template.espada.php con el siguiente código para enviar el correo electrónico formateado al remitente. Los valores pasados ​​del enviando correo electrónico clase se utilizan en esta plantilla.

Hola,
estoy $ correos electrónicos ['nombre']


Mi consulta es sobre el siguiente tema:


$ correos electrónicos ['mensaje'].


Será útil que me responda pronto.Gracias.

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

Route :: get ('/ contact', '[email protected]');
Route :: post ('/ sendemail / send', '[correo electrónico protegido]');

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

http: // localhost / laravelpro / public / contact

Complete el formulario y haga clic en el Enviar mensaje para enviar el contenido del formulario al enviar() método del Controlador de correo electrónico 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 utilizó para enviar un correo electrónico en el enviar() método del Controlador de correo electrónico clase. Si abre el correo electrónico, obtendrá el siguiente contenido de correo electrónico, generado mediante un email_template ver archivo.

Tutorial en 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 de Gmail se utiliza 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 en formato HTML. También puede realizar otras tareas, como archivos adjuntos, nombre del remitente, etc., mediante el uso de otros métodos de la Correo clase.

Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...
Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...