Enviar una Invitación de Calendario con Mandrill usando PHP
Quieres añadir a tu sistema de envios de email automatizados una invitación que se cargue en el calendario del que la recibe. Tenemos la respuesta.



Si usas Mandrill (el servicio de email transaccional de Mailchimp) para enviar correos, puedes enviar la invitación del calendario como un archivo adjunto .ics
o bien incluirlo directamente en el cuerpo del email con METHOD:REQUEST
.
Enviar una Invitación de Calendario con Mandrill usando PHP
Mandrill usa su API para enviar correos, así que debes hacer una solicitud HTTP con cURL
o usar su SDK oficial. Aquí te dejo el código PHP para enviar una invitación de calendario con METHOD:REQUEST
, lo que hará que el usuario vea los botones "Aceptar" y "Rechazar" en su correo.
Código PHP para enviar una invitación de calendario con Mandrill
$apiKey = "TU_API_KEY_DE_MANDRILL";
$recipientEmail = "cliente@email.com";
$recipientName = "Cliente";
$fromEmail = "tu-email@tuempresa.com";
$fromName = "Tu Empresa";
// Crear el evento en formato iCalendar (.ics)
$icsContent = "BEGIN:VCALENDAR ";
$icsContent .= "VERSION:2.0 ";
$icsContent .= "PRODID:-//TuEmpresa//Calendario//ES ";
$icsContent .= "METHOD:REQUEST "; // Esto permite que aparezca como invitación
$icsContent .= "BEGIN:VEVENT ";
$icsContent .= "UID:" . uniqid() . "@tuempresa.com ";
$icsContent .= "DTSTAMP:" . gmdate('YmdTHis') . " ";
$icsContent .= "DTSTART;TZID=Europe/Madrid:20240312T200000 ";
$icsContent .= "DTEND;TZID=Europe/Madrid:20240312T203000 ";
$icsContent .= "SUMMARY:Revisión diaria de informes ";
$icsContent .= "DESCRIPTION:Accede a la plataforma para revisar los informes diarios. ";
$icsContent .= "LOCATION:https://app.tuempresa.com "; // Puedes poner el link de tu SaaS
$icsContent .= "ATTENDEE;CN=$recipientName;RSVP=TRUE:mailto:$recipientEmail ";
$icsContent .= "ORGANIZER;CN=Tu Empresa:mailto:$fromEmail ";
$icsContent .= "STATUS:CONFIRMED ";
$icsContent .= "END:VEVENT ";
$icsContent .= "END:VCALENDAR ";
// Convertir el archivo ICS a base64 para enviarlo con Mandrill
$icsBase64 = base64_encode($icsContent);
// Configurar el email
$emailData = [
"key" => $apiKey,
"message" => [
"html" => "Hola,<br><br> Te hemos enviado una invitación a un evento en tu calendario.<br>
Si aceptas, se agregará automáticamente. <br><br>Saludos,<br>Tu Empresa",
"subject" => "📅 Invitación a evento: Revisión diaria de informes",
"from_email" => $fromEmail,
"from_name" => $fromName,
"to" => [[
"email" => $recipientEmail,
"name" => $recipientName,
"type" => "to"
]],
"attachments" => [[
"type" => "text/calendar; method=REQUEST",
"name" => "evento.ics",
"content" => $icsBase64
]]
]
];
// Enviar la solicitud a Mandrill
$ch = curl_init("https://mandrillapp.com/api/1.0/messages/send.json");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($emailData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// Verificar la respuesta
if ($response) {
echo "✅ Invitación enviada correctamente con Mandrill";
} else {
echo "❌ Error al enviar la invitación";
}
¿Cómo funciona este código?
- Envía un email con una invitación de calendario real usando la API de Mandrill.
- El usuario verá los botones "Aceptar" y "Rechazar" en su correo.
- Si el usuario acepta, el evento se guarda automáticamente en su calendario (Google, Outlook, Apple Calendar, etc.).
- El evento incluye un enlace en
LOCATION
, que puede ser la URL de tu SaaS o una videollamada. - El
.ics
se envía en Base64, que es el formato compatible con Mandrill para archivos adjuntos.
Alternativa: Enviar solo el .ics
como un enlace de descarga
Si prefieres que el usuario descargue el archivo manualmente en lugar de recibir la invitación directa, puedes subir el .ics
a tu servidor y enviar solo el enlace en el email:
$htmlContent = "Hola,<br><br>
Te hemos enviado una invitación de calendario.<br>
Descárgala aquí: <a href='https://tuempresa.com/evento.ics'>Descargar evento</a>.<br><br>
Pero la mejor opción es usar METHOD:REQUEST
, como en el código principal, para que el evento se guarde automáticamente cuando el usuario lo acepte. 🚀aludos,<br>Tu Empresa";
¿Qué Verá el Usuario en su Correo?
Cuando el usuario recibe la invitación en su email, verá algo así:
📧 Asunto: Invitación: Revisión diaria de informes
📅 Cuándo: Todos los días a las 8:00 PM
📍 Ubicación: https://app.tuempresa.com
✍️ Descripción: Revisión diaria de informes y actualización de datos.
✅ [Sí / Aceptar]
🤷 [Tal vez]
❌ [No]
Si el usuario hace clic en "Sí", el evento se agrega directamente a su calendario. 🚀
Somos desarrolladores web, si quieres implementar una invitación al calendario con Mandrill o con otro sistema y necesitas ayuda. No dudes en contactar.
Etiquetas
mandrill | cakendario | desarrollo web | desarrollo php | programadores web |Categoría
Diseño de páginas Web ZaragozaSubcategoría
Mantenimiento Páginas Web