En este artículo aprenderemos a enviar correos desde una cuenta gmail en nuestra aplicación laravel. Para ello, vamos a crear un formulario de contacto en nuestra aplicación, uno de los usos más comunes en el envio de correos.
Para comenzar, debemos configurar nuestra cuenta de correo para que se pueda hacer uso de ella con nuestra aplicación laravel. Lo único que debemos hacer es dirigirnos a nuestro correo y, arriba en el menú, selecionaremos la primera opción con el nombre de «Cuenta». Se nos abrirá otra ventana donde seleccionaremos en el apartado «inicio de sesión y seguridad» la opción «aplicaciones con acesso a la cuenta» y marcaremos en la siguiente ventana esta opción:
Ahora toca configurar nuestra aplicación para indicarle que correo debe utilizar, su contraseña, que protocolo de comunicación, etc.
Sin tener nuestro servidor corriendo, nos dirigimos a nuestro archivo .env que se encuentra en la raíz de nuestro proyecto, y lo modificaremos de tal forma:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=tucorreo@gmail.com
MAIL_PASSWORD=Lacontraseñadetucorreo
MAIL_ENCRYPTION=tls
Una vez hecho esto, ejecutamos un comando que es conveniente utilizar cada vez que modifiquemos nuestro archivo .env:
php artisan config:clear
En cuanto termine su ejecución, podremos arrancar nuestro servidor.
Para comenzar, vamos a crear dos vistas, una será la que contendrá nuestro formulario y otra la que se envie por email.
Para ellos nos dirigimos a la carpeta resources/views. Crearemos dos vistas, una será test.blade.php (Donde añadiremos nuestro formulario) y otra email.blade.php (El cuerpo de nuestro correo).
En test.blade.php añadiremos el siguiente formualrio:
<h2>Formulario de contacto</h2>
<form action={{route('contact')}} method="POST">
{{ csrf_field() }}
<div class="form-group">
<label for="name">Nombre</label>
<input name="name" type="text">
</div>
<div class="form-group">
<label for="name">Mensaje</label>
<input name="msg" type="text">
</div>
<div class="form-group">
<button type="submit" id='btn-contact' class="btn">Enviar</button>
</div>
</form>
Y en email.blade.php añadiremos las variables que se van a enviar desde el formulario, que sería «name» y «msg»
<h2>Nombre: {{$name}}</h2>
<h2>Mensaje: {{$msg}}</h2>
Hecho esto, crearemos un controlador que contendra la función para el envío de email (Puedes crear esta función en el controlador que quieras, no es necesario su creación).
Para este ejemplo, vamos a crear un controlador que llamaremos EmailController.php, y añadiremos la siguiente función:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail; //Importante incluir la clase Mail, que será la encargada del envío
class EmailController extends Controller
{
public function contact(Request $request){
$subject = "Asunto del correo";
$for = "correo_que_recibira_el_mensaje@gmail.com";
Mail::send('email',$request->all(), function($msj) use($subject,$for){
$msj->;from("tucorreo@gmail.com","NombreQueApareceráComoEmisor");
$msj->subject($subject);
$msj->to($for);
});
return redirect()->back();
}
}
Finalmente, solo quedará crear la ruta de contacto.
Para enviar emails con nuestra aplicación laravel, modificaremos nuestro archivo web.php con las siguientes rutas:
Route::get('/', function () {
return view('test');
}); //Esta ruta la ponemos en la raiz para que nada mas ejecutar nuestra aplicación aparezca nuestro formulario
Route::post('/contactar', 'EmailController@contact')->name('contact');
//Ruta que esta señalando nuestro formulario
Una vez hecho esto, ya solo quedaría enviar nuestro correo mediante nuestro formulario!
Si quisieramos modificar el estilo del correo, debemos añadir la etiquta <style> dentro de nuestro plantilla y ahí crear nuestros estilos. Si queremos hacer uso de alguna imagen, recuerda que debe apuntar a una que este subida a internet.
Cualquier duda contacta con nosotros, ¡un saludo!