Foros del Web » Programando para Internet » PHP »

Enviar correo formato calendario con phpmailer

Estas en el tema de Enviar correo formato calendario con phpmailer en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/06/2012, 11:31
Avatar de Lerolero  
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
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 = "[email protected]";
  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: [email protected]\n
  2.            Reply-To: [email protected]\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:[email protected]
  22. DTSTART:'.$inicio.'
  23. DTEND:'.$fin.'
  24. LOCATION: DONDE SE ENCUENTRE
  25. TRANSP:OPAQUE
  26. SEQUENCE:0
  27. ATTENDEE;
  28. CUTYPE=INDIVIDUAL;
  29. ROLE=REQ-PARTICIPANT;
  30. PARTSTAT=ACCEPTED;
  31. CREATED:19000101T120000Z
  32. DTSTAMP:'.$fecha.'
  33. DESCRIPTION:'.$compromiso.'
  34. STATUS:CONFIRMED
  35. SUMMARY:AGENDA -'.$fecha.'
  36. PRIORITY:5
  37. CLASS:PUBLIC
  38. END:VEVENT
  39. END:VCALENDAR';
  40.  
  41. $vcal = utf8_encode($vcal);
  42. $mail->AddStringAttachment($vcal, 'meeting.ics', "base64", "text/calendar");
  43.  
  44.                
  45. if(!$mail->Send($header, $message)) {//finalmente enviamos el email
  46.    echo $mail->ErrorInfo;//si no se envía correctamente se muestra el error que ocurrió
  47. } else {
  48.     $mail->ClearAddresses();
  49.      echo '<font face= "Comic Sans MS" color="red" size="8" > </br> Copia enviada al correo correctamente </font>';
  50. }
  51.  } //Fin del else si se envia correo
  52.      
  53.    }//Fin else si todo esta OK
  54. }
  #2 (permalink)  
Antiguo 08/06/2012, 13:58
Avatar de Lerolero  
Fecha de Ingreso: junio-2012
Mensajes: 18
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Enviar correo formato calendario con phpmailer

................Una luz??

Etiquetas: calendario, correo, formato, html, mysql, phpmailer, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:23.