Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2012, 11:31
Avatar de Lerolero
Lerolero
 
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 13 años
Puntos: 0
Enviar correo formato calendario con phpmailer

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
  1. $mail = new phpmailer();//Se instancia la clase phpmailer
  2. $mail->PluginDir = "./Clases/"; //Se incluye la clase para envíos por SMTP
  3. $mail->IsSMTP(); //Indicamos que se va a usar un servidor smtp
  4. $mail->Helo ="www.gmail.com"; //Importante para que llegue a hotmail y otros dominios, abre una sesión con el servidor    
  5. $mail->CharSet = 'UTF-8'; //Tipo de codificación
  6. $mail->SMTPAuth = true; //Establece la autentificación SMTP
  7. $mail->SMTPSecure = "ssl"; //Prefijo del servicio
  8. $mail->SMTPDebug = 0; // Se usa para obtener informacion (solo para las pruebas)
  9. // 1 = errores y mensajes
  10. // 2 = sólo los mensajes
  11. $mail->Host = "smtp.gmail.com"; //servidor smtp
  12. $mail->Port = 465; //puerto smtp de gmail
  13. $mail->Username = "correo@gmail.com";
  14. $mail->Password = "password";
  15. $mail->FromName = 'AGENDA';
  16. $mail->From = "correo";//email de remitente desde donde se envía el correo.
  17.  
  18. $campos = explode( ";", $_POST['correos'] );
  19. foreach( $campos as $destino ) {
  20.       $mail->addAddress( $destino );
  21. }  
  22.  
  23. $message = '<body>';
  24. $message .= '<img src="http://www.solutio-sw.net/proenergia_imagenes/headerbg.jpg" /> <br>';
  25. $message .= '<table border=0   cellpadding="10"  Width=100%>';
  26. $message .= "<tr style='background: #eee;'><td><strong> CONSECUTIVO AGENDA:</strong> </td><td><strong> #".$id."</strong></td></tr>";
  27. $message .= "<tr><td><strong>DESCRIPCION:</strong> </td><td>" .strip_tags($descripcion). "</td></tr>";
  28. $message .= "<tr><td><strong>ASUNTO:</strong> </td><td>" .strip_tags($asunto). "</td></tr>";
  29. $message .= "<tr><td><strong>PALABRA CLAVE:</strong> </td><td>" . strip_tags($palabra) . "</td></tr> ";
  30. $message .= "<tr><td><strong>CONTACTO:</strong> </td><td>" .strip_tags($contacto). "</td></tr>";
  31. $message .= "<tr><td><strong>USUARIO DESTINO:</strong> </td><td>" .strip_tags($usudestino). "</td></tr>";
  32. $message .= "<tr><td><strong>PROCESO DE DESTINO:</strong> </td><td>" . strip_tags($prodestino) . "</td></tr> ";
  33. $message .= "<tr><td><strong>COMPROMISO:</strong> </td><td>" . strip_tags($compromiso) . "</td></tr> ";
  34. $message .= "<tr><td><strong>FECHA DE COMPROMISO:</strong> </td><td>" .strip_tags($fecompromiso). "</td></tr>";
  35. $message .= "<tr><td><strong>ESTADO:</strong> </td><td>" .strip_tags($estado). "</td></tr>";
  36. $message .= "</table> <br>";
  37. $message .= '<img src="http://www.solutio-sw.net/proenergia_imagenes/pie.jpg"/>';
  38. $message .= "</body></html>"; //Cuerpo del mensaje
  39.  
  40. $mail->Subject = "AGENDA -".$fecha; //Asunto del mensaje
  41. $mail->Body = $message;//cuerpo con html
  42. $mail->AltBody = "Agenda";//cuerpo con texto plano

ESTA PARTE ES LA QUE CREA EL FORMATO ICS

Código PHP:
Ver original
  1. $header='From: correo@gmail.com\n
  2.            Reply-To: correo@gmail.com\n
  3.            MIME-Version: 1.0\n
  4.             Content-Type: text/calendar; method=REQUEST; charset=utf-8\n
  5.            Content-Transfer-Encoding: 8bit\n
  6.            Content-class: urn:content-classes:calendarmessage\n';
  7. //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
  8.  
  9. //Convertimos la fecha de formato MYSQL (YYYY-MM-DD HH:MM:SS) a formato UTC (yyyymmddThhmmssZ)
  10.  $meetingstamp = strtotime($fecha . " UTC");    
  11.  $meetingstampb = strtotime($fecompromiso . " UTC");    
  12.  $inicio= gmdate("Ymd\THis\Z",$meetingstamp);
  13.  $fin= gmdate("Ymd\THis\Z",$meetingstampb);
  14.   /*+++++++++funcion para enviar mails en formato de meeting de calendario para MS-Outlook o GMail+++++++++++*/
  15.  
  16. $vcal =    ' BEGIN:VCALENDAR
  17. PRODID:-//Microsoft Corporation//Outlook 11.0 MIMEDIR//EN
  18. VERSION:2.0
  19. METHOD:PUBLISH
  20. BEGIN:VEVENT
  21. ORGANIZER:MAILTO:katherine.latorre6@gmail.com
  22. DTSTART:'.$inicio.'
  23. DTEND:'.$fin.'
  24. LOCATION: DONDE SE ENCUENTRE
  25. TRANSP:OPAQUE
  26. SEQUENCE:0
  27. UID:u2coh5g3bppo2d2o3t@google.com
  28. ATTENDEE;
  29. CUTYPE=INDIVIDUAL;
  30. ROLE=REQ-PARTICIPANT;
  31. PARTSTAT=ACCEPTED;
  32. CN=katherine.latorre6@gmail.com:mailto:katherine.latorre6@gmail.com
  33. CREATED:19000101T120000Z
  34. DTSTAMP:'.$fecha.'
  35. DESCRIPTION:'.$compromiso.'
  36. STATUS:CONFIRMED
  37. SUMMARY:AGENDA -'.$fecha.'
  38. PRIORITY:5
  39. CLASS:PUBLIC
  40. END:VEVENT
  41. END:VCALENDAR';
  42.  
  43. $vcal = utf8_encode($vcal);
  44. $mail->AddStringAttachment($vcal, 'meeting.ics', "base64", "text/calendar");
  45.  
  46.                
  47. if(!$mail->Send($header, $message)) {//finalmente enviamos el email
  48.    echo $mail->ErrorInfo;//si no se envía correctamente se muestra el error que ocurrió
  49. } else {
  50.     $mail->ClearAddresses();
  51.      echo '<font face= "Comic Sans MS" color="red" size="8" > </br> Copia enviada al correo correctamente </font>';
  52. }
  53.  } //Fin del else si se envia correo
  54.      
  55.    }//Fin else si todo esta OK
  56. }