Foros del Web » Programando para Internet » PHP »

Seguimiento de e-mails (leer e-mails con PHP)

Estas en el tema de Seguimiento de e-mails (leer e-mails con PHP) en el foro de PHP en Foros del Web. Hola Gente ¿cómo están? Me han encargado una interesante tarea que requiere investigue un poco porque no lo he hecho nunca. Básicamente se trata de ...
  #1 (permalink)  
Antiguo 16/02/2006, 06:35
 
Fecha de Ingreso: septiembre-2003
Mensajes: 22
Antigüedad: 20 años, 6 meses
Puntos: 0
Seguimiento de e-mails (leer e-mails con PHP)

Hola Gente ¿cómo están?
Me han encargado una interesante tarea que requiere investigue un poco porque no lo he hecho nunca.

Básicamente se trata de un pequeño CMS que tiene un modulo de seguimiento de consultas de usuarias hechas via Web por formularios clásicos. La idea es que todas las consultas queden en una BD, y que los aministradores puedan responderlas desde el mismo CMS.

El problema viene cuando quien hizo la consulta, responde una respuesta de un administrador. Necesito que todos los emails de la 'converzación' estén en el sistema. Los enviados por los admins son fáciles de guardar, el problema es con los que envían los usuarios. Más que nada porque no me alcanza con un CRONJOB, necesito que todos los emails que lleguen a tal cuenta vayan a parar a un script PHP que los guarde.

Averigué un poco y aparentemente necesito tocar el mail system del servidor para hacer lo que sería una especie de redirect hacia un script PHP.

Me gustaría que los sabios que rondan Foros Del Web me orienten un poco sobre este tema a ver como lo voy resolviendo.

Desde ya mil gracias.
  #2 (permalink)  
Antiguo 16/02/2006, 07:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Más bien lo que deberías hacer es conectarte a tu cuenta de e-mail (POP/SMPT) que recibe esos e-mails de soporte y con PHP procesarlos.

En principio sería crear dicho script de proceso y ejecutarlo a intervalos de tiempo (justamente con una llamada por un cronjob o bien cuando tu administrador de turno liste esos "e-mails" recibidos" ..) sería algo así como lo que hace un "webmail" en su base.

PHP no puede estar "a la espera" del e-mail de turno que pueda llegar, sino que tu vas a "ver" si hay mensajes cada cierto tiempo.

Con PHP puedes conectarte a una cuenta de e-mail IMAP (y POP creo también) con:

www.php.net/imap

Así podrás leer los e-mails recibidos .. sus asusntos .. "parsear" su "body" (mensaje) y tratarlo como necesites.

Un saludo,
  #3 (permalink)  
Antiguo 16/02/2006, 08:35
 
Fecha de Ingreso: septiembre-2003
Mensajes: 22
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola Cluster, gracias por tu ayuda.

Pensé en esa solución, el problema grave que le veo es que no me parece lo más óptimo configurar un CRONJOB cada 5-10 o como mucho 15 minutos TODOS los días durante TODO el día. La verdad que no se cuantos recursos 'chupa' el CRONJOB en el servidor, pero a primera vista me parece mucho, aunque puedo estar equivocado.

La verdad que no se como funcionan los servidores de email, pero por lo que entendí por ahí, se los podría configurar para que cada vez que llega un email lo 'forwardee' a un script PHP que se encargará de parsear todo el email, headers y body incluído. Me imagino que será algo similar a los redirects de servidor, solo que en vez de a otra dirección de email a un script, de PHP en este caso.

De todas formas me queda la duda de que tan óptimo sea lo de configurar CRONJOBS tan regulares como las que esta tarea requiere. Si no fuera mucho problema para el servidor sería lo ideal, porque es una manera fácil de resolverlo. Si en cambio fuera un carga importante, tendré que seguir buscando alguna otra alternativa.

De nuevo Cluster, gracias por tu aporte.
  #4 (permalink)  
Antiguo 16/02/2006, 09:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
Pensé en esa solución, el problema grave que le veo es que no me parece lo más óptimo configurar un CRONJOB cada 5-10 o como mucho 15 minutos TODOS los días durante TODO el día. La verdad que no se cuantos recursos 'chupa' el CRONJOB en el servidor, pero a primera vista me parece mucho, aunque puedo estar equivocado.
Imagina entonces un "webmail" con N usuarios intentando ver su correo constantemente. Tu script PHP ejecutado a intervalos de tiempo no es más que "otro" cliente más que quiere ver su correo .. sólo que lo hace cada N tiempo constante.

El "cron job" en sí no es el que te comsumirá recursos, será tu scritp PHP y lo que este tarde en ejecutarlo ("parseando" y evaluando tus e-mails recibidos ...).

Cita:
La verdad que no se como funcionan los servidores de email, pero por lo que entendí por ahí, se los podría configurar para que cada vez que llega un email lo 'forwardee' a un script PHP que se encargará de parsear todo el email, headers y body incluído. Me imagino que será algo similar a los redirects de servidor, solo que en vez de a otra dirección de email a un script, de PHP en este caso.
Mas que "forwardee" lo que puedes hacer en la mayoría de servidores de correo es ejecutar un proceso cuando llegue un e-mail y si lo combinas con algún filtrado previo (hacia la cuenta de e-mail que llega .. etc) podrías lanzar la ejecución de tu script PHP en modo "CLI" (Command Line Interface) .. pero en definitiva es lo mismo cara a PHP donde tiene que "conectarse" a tu cuenta de correo (por POP o IMAP con su autentificación .. etc) para ver el e-mail.

Si tienes control total sobre tu servidor, tal vez te vendría mejor crear un script en Perl u otros lenguajes (C? .. ) para hacer ese proceso de tus e-mails llevando tus datos directamente a tus BBDD que uses. En ese caso sólo usaras a PHP para ver y seguir trabajando esos datos que ya estarán en tus BBDD ingresados.


Un saludo,
  #5 (permalink)  
Antiguo 17/02/2006, 05:24
 
Fecha de Ingreso: septiembre-2003
Mensajes: 22
Antigüedad: 20 años, 6 meses
Puntos: 0
Sonrisa

Gracias una vez más, Cluster. Entre vos y una confirmación desde soporte técnico del servidor confirmo que puedo hacerlo tranquilo programando un cronjob y levantando los emails con PHP. Me pondré manos a la obra.

Muchísimas gracias.
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 05:31.