Cómo hacer que el software de mi sitio web lea un correo electrónico, capture la ID en el asunto y actúe en función de esa ID

Los sitios web no funcionan de esa manera. ¿Por qué? Los sitios web no se ejecutan sin una persona que mira la página web. Está describiendo un requisito que puede abordarse a través de un programa de fondo. Un programa de fondo es uno que se ejecuta solo en lugar de esperar a que una persona haga clic en algo. Puede hacer cosas constantemente como buscar correos electrónicos cada segundo sin cansarse.

Podría tener una página web que se actualice automáticamente cada segundo. Podría hacer que parezca que la página web está recibiendo datos de correo electrónico. Sin embargo, todo lo que realmente está sucediendo es que la página web está llegando al sistema de fondo.

El sistema de fondo puede funcionar de 1 a 3 formas. Limitaremos la discusión a Microsoft Windows Server aunque se pueda hacer un diseño similar en un servidor Linux.

Crearemos un servicio de Windows. Cuando Windows se inicia, iniciará el servicio automáticamente. No es necesario que el usuario final esté presente para iniciar el servicio. También puedo lograr algo similar con el Programador de tareas de Windows. Un servicio es más fácil de describir y tiene ventajas en esta situación.

El servicio se creó asumiendo que puedo compartir el acceso a los puertos TCP / IP 110 y / o 995. La tradición dice que el correo electrónico llega a través de Internet (no de la Web) a través de estos puertos. El servicio luego lee los datos enrutados a través de estos puertos. Decodifica los datos hasta que tengas un encabezado SMTP. El encabezado tendrá la dirección del remitente. En este punto, puede incorporar lógica para actuar sobre los datos y producir una salida adecuada.

Eso supone un sistema de correo electrónico simple. El sistema de correo electrónico de Microsoft no es simple. Un sistema de correo electrónico como Microsoft Exchange puede variar desde unos pocos cientos hasta unos pocos miles de dólares para alojarlo usted mismo o unos pocos dólares al mes para que Microsoft opere el sistema de correo electrónico por usted. De cualquier manera, tienes que conectarlo. Todavía podría usar el enfoque que mencioné pero con mucho más código para la intercepción.

El segundo enfoque es hacer lo que se llama retransmisión SMTP. La copia del contenido del correo electrónico puede existir temporalmente en una base de datos de archivos. Usted lee el archivo, levanta la dirección del remitente filtrada por tiempo y responde según corresponda.

La tercera opción es usar una API. La API es un método de programación para acceder a un sistema de manera apropiada para ese sistema. Microsoft Exchange y muchos sistemas de correo electrónico tienen API que puede usar para acceder a esos sistemas de una manera más ágil. Usaría la API de la misma manera que el método 1, excepto que el sistema de correo electrónico ya realizó los detalles de la decodificación del encabezado SMTP e informa los datos decodificados al programa en el momento en que el programa lo solicita. Pregunte con la suficiente frecuencia y el proceso puede aparecer casi en tiempo real.

Una página web en un ciclo de actualización automática luego extrae los resultados del programa de fondo. O bien, la página utiliza un servicio web (REST o SOAP) en el que aprovecha el programa de fondo para el sistema de correo electrónico en sí. Luego, la página web ejecuta código dentro de la página en JavaScript o informa el resultado de las acciones tomadas por el programa de fondo.

No sé qué idioma estás usando, así que solo daré una respuesta general.

Primero, necesita una forma de recibir el mensaje de correo electrónico. Los idiomas más populares tendrán alguna forma de establecer una conexión con una cuenta de correo electrónico y descargar mensajes. Es posible que necesite instalar una biblioteca externa, o esto podría estar integrado en el lenguaje central, pero debería haber una manera.

En general, esto le permitirá recorrer los mensajes, cada vez que coloque un mensaje en algún tipo de estructura de datos para que pueda inspeccionarlo.

La línea de asunto será una parte de esta estructura. Puede usar alguna forma de coincidencia de texto para determinar si hay una ID en la línea de asunto; si no, salte a la siguiente iteración del bucle y mire el siguiente mensaje.

Si encuentra una ID en la línea de asunto, puede tomar cualquier acción que desee en función del valor de la ID. Si puede haber mensajes adicionales que contengan ID, puede continuar el ciclo e inspeccionar cada uno de esos mensajes de la misma manera. De lo contrario, simplemente puede terminar el ciclo.

Todavía queda la cuestión de cómo ejecutar este proceso, y hay varias soluciones.

Una popular es ejecutarlo como un trabajo programado. Tendría que configurar esto a través de su proveedor de alojamiento, posiblemente a través de su interfaz administrativa o editando un archivo de configuración directamente. De cualquier manera, definiría un cronograma como “todos los días al mediodía” o “cada quince minutos” o lo que sea, y el servidor ejecutaría el proceso en ese cronograma.

Antes de decidir el cronograma, debe probar el proceso manualmente para asegurarse de que se ejecuta correctamente y saber cuánto tiempo lleva. No programe que se ejecute con tanta frecuencia que no tenga tiempo de terminar antes de la próxima hora programada. Permita tiempo adicional en caso de que su bandeja de entrada se inunde con correo no deseado por algún motivo, o si sucede algo más.

Si no puede crear trabajos programados, puede vincular el proceso a una página cargada con frecuencia en su sitio. Esa página podría verificar el tiempo, y si hubiera transcurrido una cierta cantidad de tiempo desde la última ejecución, ejecutaría el proceso de verificación de correo electrónico después de cargar el resto de la página. Debería mantener un registro de la última vez que se ejecutó el proceso (tal vez en una base de datos o un archivo) y actualizar ese registro cada vez que inicie el proceso. Si espera hasta que finalice el proceso, corre el riesgo de que otra persona llegue a la página e inicie el proceso nuevamente antes de que finalice.

Hay otras preocupaciones, pero esto al menos debería darte los conceptos básicos.

More Interesting

Cómo resolver un problema usando C ++

¿Cuál es la complejidad temporal del uso de un árbol de búsqueda binario para ordenar los números de un grupo?

¿Cuál es el beneficio de resolver un problema de HackerRank.com?

¿Cuáles son algunos de los algoritmos / estructuras de datos que son útiles en la vida real?

¿Puedo hacer que un usuario de matriz ingrese su tamaño?

¿Cuál es el algoritmo de clasificación menos eficiente?

¿En qué tipos de gráfico DFS y BFS producirán el mismo árbol (misma fuente) independientemente de la secuencia de visitas de los vecinos?

Cómo comenzar a aprender o fortalecer mi conocimiento de estructuras de datos y algoritmos

¿Qué estructura de datos se utiliza para almacenar la pestaña reciente en el teléfono?

¿Debo postularme a trabajos de desarrollo web si puedo construir aplicaciones CRUD pero no asimilo la notación Big O y nunca he trabajado en un proyecto grupal?

Digamos que encontramos un algoritmo que resuelve problemas de NP-Complete en tiempo polinómico pero no podemos probarlo. ¿Cuáles serían las consecuencias?

¿Por qué deberíamos conocer más de un algoritmo de clasificación en Python (burbuja, inserción, selección) si todos están haciendo el mismo trabajo?

He resuelto unos 52 problemas en SPOJ. ¿Debería mudarme a Codeforces ahora?

¿Cuáles son buenas maneras de encontrar el algoritmo y el cálculo necesarios? Normalmente no necesito pensarlo, pero recientemente, estoy luchando con ellos.

Matemáticas generales que uno debe saber antes de tomar la clase de algoritmo? Especialmente para estudiantes con antecedentes no informáticos.