Foros del Web » Programando para Internet » PHP »

Crear script PHP para tramitar emails tipo CRM

Estas en el tema de Crear script PHP para tramitar emails tipo CRM en el foro de PHP en Foros del Web. Buenas, Me gustaría saber de que forma puedo tramitar todos los correos que lleguen a una determinada dirección de correo. Mi intención es convertirlos a ...
  #1 (permalink)  
Antiguo 02/09/2009, 00:02
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Crear script PHP para tramitar emails tipo CRM

Buenas,

Me gustaría saber de que forma puedo tramitar todos los correos que lleguen a una determinada dirección de correo. Mi intención es convertirlos a texto plano e introducirlos en una bbdd, todo esto utilizando PHP.

¿Alguien se le ocurre alguna forma? ¿Es la más óptima?

Gracias de antemano
  #2 (permalink)  
Antiguo 02/09/2009, 00:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Crear script PHP para tramitar emails tipo CRM

Con IMAP lo puedes lograr
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 02/09/2009, 23:47
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Crear script PHP para tramitar emails tipo CRM

Cita:
Iniciado por abimaelrc Ver Mensaje
Con IMAP lo puedes lograr
Si me conecto con imap puedo descargar el contenido del mensaje en texto plano y introducirlo en la BBDD?
  #4 (permalink)  
Antiguo 03/09/2009, 08:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Crear script PHP para tramitar emails tipo CRM

Así es, puedes ver todos los mensajes, abrir uno, extraer attachments, etc.

Saludos.
  #5 (permalink)  
Antiguo 03/09/2009, 12:45
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Crear script PHP para tramitar emails tipo CRM

Cita:
Iniciado por GatorV Ver Mensaje
Así es, puedes ver todos los mensajes, abrir uno, extraer attachments, etc.

Saludos.
He llegado a crear el siguiente script

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Chequear cuenta de correo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?

$imap 
imap_open ("{imap.gmail.com:993/imap/ssl}INBOX""USER""PASS") or die("No Se Pudo Conectar Al Servidor:" imap_last_error());
$checar imap_check($imap);
// Detalles generales de todos los mensajes del usuario.
$resultados imap_fetch_overview($imap,"1:{$checar->Nmsgs}",0);
$cont 0;
foreach (
$resultados as $detalles) {
    echo 
"<body bgcolor=\"#FF9900\">";
    echo 
"Numero Correo #: $detalles->msgno <br>";
    echo 
"Fecha Correo: $detalles->date<br>";
    echo 
"de: $detalles->from <br>";
    echo 
"Para: $detalles->to <br>";
    echo 
"Asunto: $detalles->subject<br>";
    echo 
"Tamano: $detalles->size bytes<br>";
    if(
$detalles->seen == "0") {
        echo 
"<b>Mensaje NO Leido!.<br>";
        
$cont $cont 1;
    } else {
        echo 
"Mensaje Leido!.<br>";
        
    }
    
$servidorenvia strstr($detalles->message_id'@');
    echo 
"Dominio Que Envia: $servidorenvia<br><hr>";
}
print 
"MENSAJES SIN LEER = $cont";
imap_close($imap);
?>

</body></html>
Esto me da la siguiente salida

Numero Correo #: 19
Fecha Correo: Tue, 16 Dec 2008 12:41:36 -0500
de: The Joomlashack Team
Para: MI DIRECCION
Asunto: Joomlashack News: Joomla 1.5 template reloaded, and the hottest Joomla extension
Tamano: 30180 bytes
Mensaje NO Leido!.
Dominio Que Envia: @localhost.localdomain>


Cómo puedo mostrar el contenido del mensaje y sus adjuntos?

Muchas gracias
  #6 (permalink)  
Antiguo 03/09/2009, 12:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Crear script PHP para tramitar emails tipo CRM

Tienes que usar imap_fetchbody junto con imap_fetchstructure.

Saludos.
  #7 (permalink)  
Antiguo 03/09/2009, 13:06
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Crear script PHP para tramitar emails tipo CRM

Otra pregunta, esto de aquí me miente xD

Código PHP:
$check imap_mailboxmsginfo($imap);

if (
$check) {
    echo 
"Date: "     $check->Date    "<br />\n" ;
    echo 
"Driver: "   $check->Driver  "<br />\n" ;
    echo 
"Mailbox: "  $check->Mailbox "<br />\n" ;
    echo 
"Messages: " $check->Nmsgs   "<br />\n" ;
    echo 
"Recent: "   $check->Recent  "<br />\n" ;
    echo 
"Unread: "   $check->Unread  "<br />\n" ;
    echo 
"Deleted: "  $check->Deleted "<br />\n" ;
    echo 
"Size: "     $check->Size    "<br />\n" ;
} else {
    echo 
"imap_check() failed: " imap_last_error() . "<br />\n";

Acabo de borrar varios mensajes y en Deleted me sale siempre 0.
También pruebo de enviarme correos y ver si cambia el campo Recent pero tampoco.

¿También os pasa?
  #8 (permalink)  
Antiguo 03/09/2009, 13:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Crear script PHP para tramitar emails tipo CRM

Esa información es la que entrega el servidor IMAP, no tiene nada que ver con tu script PHP, vas a tener que ver si hay algun cache que este haciendo tu servidor IMAP.

Saludos.
  #9 (permalink)  
Antiguo 03/09/2009, 15:18
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Cita:
Iniciado por GatorV Ver Mensaje
Tienes que usar imap_fetchbody junto con imap_fetchstructure.

Saludos.
Si el mensaje está escrito en texto plano bien, pero si el mensaje está escrito en html como lo descodifico a texto plano?

Muchas gracias

Cita:
Iniciado por neodani Ver Mensaje
Si el mensaje está escrito en texto plano bien, pero si el mensaje está escrito en html como lo descodifico a texto plano?

Muchas gracias
He probado

echo htmlentities($mensaje);

Pero me escribe todo el mensaje en texto plano con las etiquetas html...

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://app.ecentry.com/3/c/?62324.142487.223.1242.0.ab2d05d"> <html xmlns="http://app.ecentry.com/3/c/?62324.142487.223.1243.0.c63987a"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Pagina web</title> </head> <body marginheight="0" marginwidth="0" bgcolor="#00253C"> <div style="background-color:#00253C"> <p align="center" style="font:normal 11px Arial, Helvetica, sans-serif; color: #CCCCCC; margin:0px">Si no puede ver correctamente este e&ndash;mail haga click <a href="http://app.ecentry.com/3/c/?62324.142487.223.1161.0.3fec68d" target="_blank" style="color:#CCCCCC">
.
.
.
¿No hay ninguna función para eliminar estas etiquetas?

Muchas gracias

Última edición por GatorV; 03/09/2009 a las 15:36
  #10 (permalink)  
Antiguo 03/09/2009, 15:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Crear script PHP para tramitar emails tipo CRM

Si quieres eliminar el html, usa strip_tags.

Saludos.
  #11 (permalink)  
Antiguo 03/09/2009, 15:41
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Crear script PHP para tramitar emails tipo CRM

Cita:
Iniciado por GatorV Ver Mensaje
Si quieres eliminar el html, usa strip_tags.

Saludos.
Genial utilicé strip_tags dejando las etiquetas de párrafos <p> para que me formateara el texto y no quedase todo junto, sin saltos de linea.

echo strip_tags($mensaje,'<p>');

Creo que es lo máximo que se puede conseguir a la hora de transformar un correo html a texto plano

Ahora me falta saber encontrar la manera de extraer el campo correcto de la cabecera para saber si el correo me viene en texto plano o en html...

¿Alguna manera directa de saberlo?
  #12 (permalink)  
Antiguo 03/09/2009, 15:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Crear script PHP para tramitar emails tipo CRM

Ya te lo habia indicado con imap_fetchstructure.
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 02:18.