Skip to content

Instantly share code, notes, and snippets.

@IsaacAndres
Last active April 19, 2023 13:30
Show Gist options
  • Save IsaacAndres/c2cef31a601b1c3ad49d40c4d389aea7 to your computer and use it in GitHub Desktop.
Save IsaacAndres/c2cef31a601b1c3ad49d40c4d389aea7 to your computer and use it in GitHub Desktop.
Este código muestra cómo agregar la opción "Añadir el calendario" a los correos electrónicos enviados mediante Laravel Mailable, utilizando la librería Spatie Icalendar Generator para crear archivos iCalendar.
<?php
/*
* Se requiere la instalación del paquete Spatie/IcalendarGenerator vía composer para utilizar
* funcionalidad de generación de archivos iCalendar.
* El paquete puede ser instalado con el comando "composer require spatie/icalendar-generator"
* Para más información, consulte la documentación en https://github.com/spatie/icalendar-generator
*/
namespace App\Mail;
use Carbon\Carbon;
use Illuminate\Mail\Mailable;
// Importacion de las clases de Spatie/ICalendar
use Spatie\IcalendarGenerator\Components\Calendar;
use Spatie\IcalendarGenerator\Components\Event;
class ExampleICalendarInMail extends Mailable
{
public function build()
{
// Se crea un objeto iCalendar usando la librería Spatie Icalendar Generator
$ics = Calendar::create('Título del evento') // Creación del objeto Calendar
->event(Event::create('Título del evento') // Creación del objeto Event y añadiéndolo al objeto Calendar
->startsAt(Carbon::parse('2023-04-18')->setTimezone('UTC')) // Añadiendo la fecha de inicio al objeto Event
->endsAt(Carbon::parse('2023-04-20')->setTimezone('UTC')) // Añadiendo la fecha de término al objeto Event
)
->get(); // Obteniendo el archivo iCalendar en formato string
// Se retorna el correo electrónico en formato Markdown, con un remitente y un asunto
// Además, se adjunta el archivo iCalendar creado anteriormente
return $this->markdown('emails.example') // Especificando la plantilla de correo electrónico a usar
->from(config('app.mail_from_addres'), 'Isaac') // Añadiendo el remitente del correo
->subject('Email con ICalendar') // Añadiendo el asunto del correo
->attachData($ics, 'invite.ics', [ // Añadiendo el archivo iCalendar como adjunto
'mime' => 'text/calendar', // Especificando el tipo de archivo
]);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment