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. 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>PALABRA CLAVE:</strong> </td><td>" . strip_tags($palabra) . "</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 .= "</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
Reply-To: [email protected]\n 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) /*+++++++++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 ORGANIZER:MAILTO:[email protected] 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 }