A continuación muestro como usar la clase Mailable. Esta clase representa a un formato de correo electrónico específico. A continuación crearemos como ejemplo el formato para los envios del formulario de contacto de una web.
1- Creamos la clase Mailable ContactForm desde la consola, la clase se creará en la carpeta app/Mail
php artisan make:mail ContactForm
2- En nuestro controlador (p.e. FrontofficeController) añadimos la función que realizará la llamada del envío.
class FrontofficeController extends Controller {
public function sendForm(Request $request){
Mail::to('oscar@example.com')->send(new ContactForm($request));
return back()->with('done', 1);
}
}
3- En la clase ContactForm realizaremos las siguientes modificaciones para tener los datos del formulario disponibles en la vista.
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class ContactForm extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public $request;
public function __construct($request)
{
$this->request = $request;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('noreply@example.com', 'AxC')
->subject('Formulari de contacte')
->markdown('emails.contact-form');
return $this->view('emails.contact-form');
}
}
4- Una vez hecho esto, pasamos a insertar los datos recibidos del formulario en nuestra vista del mail que enviaremos.
@component('mail::message')
Un usuari ha fet servir el formulari de contacte. <br />
A continuació es mostren les dades rebudes: <br /> <br />
Nom i cognoms: {{ $request->name }} <br />
Correu electrònic: {{ $request->email }} <br />
Telèfon: {{ $request->phone }} <br />
Comentaris: {{ $request->message }}
@endcomponent
Y esto es todo.

