Creo que tú, yo, cualquiera que haya recibido alguna vez un correo electrónico, podemos estar de acuerdo en que nuestro primer correo electrónico apesta.
No aporta ningún valor.
¡Mejorémoslo!
En primer lugar, podemos añadir un nombre al correo electrónico.
Esto aparecerá en la mayoría de los clientes de correo electrónico en lugar
de sólo la dirección de correo electrónico: tiene un aspecto más fluido.
Envuelve el from con new Address(), el de Symfony\Component\Mime.
El primer argumento es el correo electrónico, y el segundo es el nombre: ¿qué te parece Universal Travel:
También podemos envolver el to con new Address().
y pasar $customer->getName() para el nombre: Para el subject,
añade el nombre del viaje: 'Confirmación de reserva para ' .
$trip->getName(): Para el cuerpo text.
Podríamos alinear todo el texto aquí.
Eso se pondría feo, así que ¡utilicemos Twig!
Necesitamos una plantilla.
En templates/, añade un nuevo directorio email/ y dentro,
crea un nuevo archivo: booking_confirmation.txt.twig.
Twig puede utilizarse para cualquier formato de texto, no sólo para html.
Una buena práctica es incluir el formato - .html o .txt - en el nombre del archivo.
Pero a Twig no le importa eso: es sólo para satisfacer nuestro cerebro humano.
Volveremos a este archivo en un segundo.
Vuelve a TripController::show(), en lugar de new Email(), utiliza new TemplatedEmail() (el
de Symfony\Bridge\Twig): Sustituye ->text()
por ->textTemplate('email/booking_confirmation.txt.twig'): Para
pasar variables a la plantilla, utiliza ->context() con 'customer' => $customer,
'trip' => $trip, 'booking' => $booking: Ten en cuenta
que aquí técnicamente no estamos renderizando la plantilla Twig: Mailer
lo hará por nosotros antes de enviar el correo electrónico. Esto
es código Twig normal y aburrido. Vamos a
mostrar el nombre del usuario utilizando un truco barato, el nombre del viaje, la fecha de salida y
un enlace para gestionar la reserva.
Necesitamos utilizar URL absolutas en los correos electrónicos -como https://univeral-travel.com/booking-, así que
aprovecharemos la función Twig url() en lugar de path(): {{
url('booking_show', {'uid': booking.uid}) }}. Termina
amablemente con, Regards, the Universal Travel team: ¡Cuerpo del correo electrónico listo! Pruébalo.
De nuevo
en tu navegador, elige un viaje, nombre: Steve, correo electrónico: steve@minecraft.com, cualquier
fecha en el futuro, y reserva el viaje. Abre
el perfil de la última petición y haz clic en la pestaña Emails para ver el correo electrónico. ¡ Mucho
mejor! Observa que
las direcciones From y To ahora tienen nombre. ¡ Y
nuestro contenido de texto es definitivamente más valioso! Copia
la URL de la reserva y pégala en tu navegador para asegurarte de que va al lugar correcto.
Parece que sí, ¡bien! A continuación,
utilizaremos la herramienta de pruebas de Mailtrap para obtener una vista previa más robusta del correo electrónico.