Ejecutar script PHP tras recibir un e-mail

515 views
Skip to first unread message

César Saiz

unread,
Sep 23, 2010, 7:56:55 AM9/23/10
to phpm...@googlegroups.com
Buenas!!

Estaba buscando documentación sobre cómo montar un sistema que procese los emails enviados a una determinada cuenta de correo y ejecute un script PHP a partir del contenido del email.
El uso principal sería para que los usuarios pudieran responder directamente a un email de actividad en la página web (por ejemplo: 'Pedrito te ha enviado un mensaje privado'), de tal forma que el mensaje que envíen de respuesta (a una dirección reply-to que yo haya predefinido) se publique en la página web como si lo hubiera insertado el usuario directamente desde un formulario de la página (en este caso, sería un mensaje privado en respuesta a Pedrito).
Facebook hace algo parecido, y al final no dista mucho de lo que puedan usar tumblr y similares para publicar posts vía e-mail.

Lo más interesante que he encontrado es:
http://www.phpclasses.org/blog/package/2/post/1-Process-incoming-email-messages-using-PHP.html

¿Alguien tiene experiencia con algún sistema de estos?
No sé si finalmente lo implementaremos, pero en cualquier caso me resulta muy interesante.


César Saiz 'Emper'
~ The wavelength gently grows

Daniel Vigueras

unread,
Sep 23, 2010, 9:56:41 AM9/23/10
to phpm...@googlegroups.com
Hola César,

la idea que se me ocurre es que introduzcas en la configuración del servidor de correo una entrada de tipo 'catch-all' que te envíe todo el correo asociado a un dominio a una cuenta que sea la que el script php consulte periódicamente.

Luego jugando con el campo usuario dentro de usu...@dominio.com puedes hacer que ese sea el comando a ejecutar, por ejemplo sendpm+...@dominio.com . Pero ten en cuenta la seguridad, ya que no querrás que cualquier persona desde fuera pueda enviar correos y fiarte únicamente del campo 'From:' del email no es suficiente, ya que cualquiera lo podría falsificar.

Se me ocurre que podrías implementar algún sistema de tokens, de manera que cuando envíes un email a un usuario en la dirección de Reply-To pongas algo como sendpm+usu...@dominio.com 
El script cuando procese el email parseará el campo To: y si el token es correcto procederá al envío del mensaje privado.

La generación del token puede ser simplemente una función sha1 del identificador del usuario en tu base de datos concatenado con una clave privada interna a la aplicación.

$token = sha1($user_id . $app_key);

Espero que te sean de ayuda mis ideas, saludos!


2010/9/23 César Saiz <empe...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo de correo "PHP Madrid".
Para enviar un email a todos los miembros del grupo dirígete a phpm...@googlegroups.com
Para abandonar el grupo envía un email a la dirección phpmadrid+...@googlegroups.com
Para otra opciones o para ver la web del grupo:
http://groups.google.com/group/phpmadrid?hl=es

Guille -bisho-

unread,
Oct 12, 2010, 10:56:35 AM10/12/10
to phpm...@googlegroups.com
Las máquinas linux tienen la posibilidad de ejecutar filtros cuando
llega un correo. Busca sobre procmail y sus herramientas. Ejecutar tu
propio script para procesar los correos no debería ser ningún
problema.

El mayor inconveniente suele ser procesar los correos. Cada programa
de correo envía los mensajes de su propio modo, no siempre se respetan
los estándares, puede ser html, multi parte, etc. Mejor que busques
una buena librería mime para leer los mensajes. O como sugería un
co-listero, utiliza sólo la dirección de destino para determinar la
acción a realizar.

--
Guille -ℬḭṩḩø- <bish...@gmail.com>
:wq

Reply all
Reply to author
Forward
0 new messages