Hola,
Soy nueva en el foro, de antemano pido disculpas si publico donde no es.
Intentare ser lo mas clara posible para que me puedan ayudar.
Por medio de la clase phpmailer envio un correo con contenido html, lo que quiero es que ese correo me lo envié con formato ical o calendario, que cuando lo abra en el outlook o gmail aparezca el calendario con los botones de ACEPTAR, RECHAZAR, PROVISORIO, lo único que he logrado hasta ahora es que envié un archivo adjunto con extensión "ics", cuando abro ese archivo si muestra el evento y las fechas pero yo quiero que el outlook o gmail interprete el .ics y lo muestre en formato de mail-convocatoria (mail con los botones de aceptar, rechazar, provisorio). No que lo muestre como archivo adjunto.
Código PHP:
Ver original$mail = new phpmailer();//Se instancia la clase phpmailer
$mail->PluginDir = "./Clases/"; //Se incluye la clase para envíos por SMTP
$mail->IsSMTP(); //Indicamos que se va a usar un servidor smtp
$mail->Helo ="www.gmail.com"; //Importante para que llegue a hotmail y otros dominios, abre una sesión con el servidor
$mail->CharSet = 'UTF-8'; //Tipo de codificación
$mail->SMTPAuth = true; //Establece la autentificación SMTP
$mail->SMTPSecure = "ssl"; //Prefijo del servicio
$mail->SMTPDebug = 0; // Se usa para obtener informacion (solo para las pruebas)
// 1 = errores y mensajes
// 2 = sólo los mensajes
$mail->Host = "smtp.gmail.com"; //servidor smtp
$mail->Port = 465; //puerto smtp de gmail
$mail->Password = "password";
$mail->FromName = 'AGENDA';
$mail->From = "correo";//email de remitente desde donde se envía el correo.
$campos = explode( ";", $_POST['correos'] ); foreach( $campos as $destino ) {
$mail->addAddress( $destino );
}
$message = '<body>';
$message .= '<img src="http://www.solutio-sw.net/proenergia_imagenes/headerbg.jpg" /> <br>';
$message .= '<table border=0 cellpadding="10" Width=100%>';
$message .= "<tr style='background: #eee;'><td><strong> CONSECUTIVO AGENDA:</strong> </td><td><strong> #".$id."</strong></td></tr>";
$message .= "<tr><td><strong>DESCRIPCION:</strong> </td><td>" .strip_tags($descripcion). "</td></tr>"; $message .= "<tr><td><strong>ASUNTO:</strong> </td><td>" .strip_tags($asunto). "</td></tr>"; $message .= "<tr><td><strong>PALABRA CLAVE:</strong> </td><td>" . strip_tags($palabra) . "</td></tr> "; $message .= "<tr><td><strong>CONTACTO:</strong> </td><td>" .strip_tags($contacto). "</td></tr>"; $message .= "<tr><td><strong>USUARIO DESTINO:</strong> </td><td>" .strip_tags($usudestino). "</td></tr>"; $message .= "<tr><td><strong>PROCESO DE DESTINO:</strong> </td><td>" . strip_tags($prodestino) . "</td></tr> "; $message .= "<tr><td><strong>COMPROMISO:</strong> </td><td>" . strip_tags($compromiso) . "</td></tr> "; $message .= "<tr><td><strong>FECHA DE COMPROMISO:</strong> </td><td>" .strip_tags($fecompromiso). "</td></tr>"; $message .= "<tr><td><strong>ESTADO:</strong> </td><td>" .strip_tags($estado). "</td></tr>"; $message .= "</table> <br>";
$message .= '<img src="http://www.solutio-sw.net/proenergia_imagenes/pie.jpg"/>';
$message .= "</body></html>"; //Cuerpo del mensaje
$mail->Subject = "AGENDA -".$fecha; //Asunto del mensaje
$mail->Body = $message;//cuerpo con html
$mail->AltBody = "Agenda";//cuerpo con texto plano
ESTA PARTE ES LA QUE CREA EL FORMATO ICS
Código PHP:
Ver original MIME-Version: 1.0\n
Content-Type: text/calendar; method=REQUEST; charset=utf-8\n
Content-Transfer-Encoding: 8bit\n
Content-class: urn:content-classes:calendarmessage\n';
//EN ALGUNA PARTE LEI QUE ESTO ERA IMPORTANTE PARA QUE LLEGARA CON EL FORMATO DE CALENDARIO PERO ESTABA COMO HEADER Y ACA NO SE DONDE METERLO
//Convertimos la fecha de formato MYSQL (YYYY-MM-DD HH:MM:SS) a formato UTC (yyyymmddThhmmssZ)
$meetingstampb = strtotime($fecompromiso . " UTC"); $inicio= gmdate("Ymd\THis\Z",$meetingstamp); $fin= gmdate("Ymd\THis\Z",$meetingstampb); /*+++++++++funcion para enviar mails en formato de meeting de calendario para MS-Outlook o GMail+++++++++++*/
$vcal = ' BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
VERSION:2.0
METHOD:PUBLISH
BEGIN:VEVENT
DTSTART:'.$inicio.'
DTEND:'.$fin.'
LOCATION: DONDE SE ENCUENTRE
TRANSP:OPAQUE
SEQUENCE:0
ATTENDEE;
CUTYPE=INDIVIDUAL;
ROLE=REQ-PARTICIPANT;
PARTSTAT=ACCEPTED;
CREATED:19000101T120000Z
DTSTAMP:'.$fecha.'
DESCRIPTION:'.$compromiso.'
STATUS:CONFIRMED
SUMMARY:AGENDA -'.$fecha.'
PRIORITY:5
CLASS:PUBLIC
END:VEVENT
END:VCALENDAR';
$mail->AddStringAttachment($vcal, 'meeting.ics', "base64", "text/calendar");
if(!$mail->Send($header, $message)) {//finalmente enviamos el email
echo $mail->ErrorInfo;//si no se envía correctamente se muestra el error que ocurrió
} else {
$mail->ClearAddresses();
echo '<font face= "Comic Sans MS" color="red" size="8" > </br> Copia enviada al correo correctamente </font>';
}
} //Fin del else si se envia correo
}//Fin else si todo esta OK
}