2009-03-30 14 views
7

Varias aplicaciones tienen la práctica función de permitir a los usuarios responder correos electrónicos de notificación de la aplicación. Las respuestas se devuelven a la aplicación.Directrices para aceptar mensajes de correo electrónico como entrada a la aplicación

Por ejemplo, si estuviera creando un sistema de atención al cliente, el correo electrónico probablemente contuviera algún token para vincular la respuesta con el ticket de servicio correcto.

¿Cuáles son algunas pautas, sugerencias y consejos para implementar este tipo de sistema? ¿Cuáles son algunas de las posibles dificultades a tener en cuenta? Afortunadamente aquellos que han implementado sistemas como este pueden compartir su sabiduría.

Respuesta

10

Algunas pautas y consideraciones:

La pregunta dirección: Lo mejor que puede hacer es utilizar el signo "+" parte de extensión de una dirección de correo electrónico (myaddr**+custom**@gmail.com). Esto facilita la ruta pero, sobre todo, facilita el seguimiento del enrutamiento de la dirección en su sistema. Otras técnicas pueden usar un token en el asunto

Spam: realice el procesamiento de correo no deseado fuera de la aplicación y haga que el filtro de la aplicación se base en un encabezado.

Mensajes fallidos en la cola: No, en su mayor parte. El comportamiento estándar del correo electrónico es intentar hasta 3 días para entregar un mensaje. Para un servidor de correo electrónico de aplicaciones, todo lo que hace es crear archivos de spool gigantes de correo que probablemente nunca procesará. Solo coloque los mensajes en cola si los motivos de falla están fuera de su control (p. Ej., El servidor no funciona).

Manejo de mensaje no válido: Hay varias formas en que un mensaje puede ser no válido. Algunas son limitaciones de la biblioteca (no puede analizar la dirección, aunque es una válida de RFC). Otros se deben a clientes rotos (por ejemplo, al omitir las comillas de ciertos encabezados). Los demás pueden ser demasiado grandes, o usar una codificación desconocida, perder encabezados críticos, tener múltiples valores donde solo debe haber uno, violar alguna semántica específica de su aplicación, etc., etc. Básicamente, donde sea que se encuentre Java mail API podría arrojar una excepción es un caso de manejo de errores debe determinar cómo manejar adecuadamente.

Respuestas de error: No todos los errores merecen una respuesta. Algunos se generan a causa del correo no deseado, y debe evitar enviar mensajes de vuelta a esas direcciones. Otros son de sistemas automatizados (usted mismo, un respondedor de vacaciones, otro sistema de correo de aplicación, etc.) y, si responde, le enviará otro mensaje repitiendo el ciclo.

Hacks específicos del cliente: como arriba, cada cliente tiene pequeñas diferencias que complicarán su código. Tenga esto en cuenta cada vez que atraviesa la estructura de un mensaje.

remitentes, respuestas, y los bucles: Dependiendo de su situación, que podría recibir el correo de alguna de las siguientes fuentes:

  • personas reales, tal vez de fuentes externas
  • Listas de correo
  • Usted o una de sus direcciones de destinatario
  • Otros servidores de correo (rebotes, fallas, etc.)
  • Entidad en otro sistema (my- [email protected], system-monitor @ localhost)
  • Un sistema automatizado
  • un alias a uno de los anteriores
  • un alias a un alias

Ahora, su primer impulso es probablemente "¡Solo acepte correos de fuentes correctas!", pero eso le causará muchos dolores de cabeza porque la gente enviará las cosas más terribles a un servidor de correo de aplicaciones. Encuentro que es mejor aceptar todo y negar explícitamente las excepciones.

Depuración: Guarde una copia de los encabezados de los mensajes que reciba. Esto ayudará enormemente cada vez que tenga un problema.

--Edit--

He comprado el libro, la creación de sitios web escalables, mencionados por rossfabricant. Tiene una buena sección de correo electrónico. Un par de puntos importantes que tiene son sobre el manejo del correo electrónico de los operadores inalámbricos y la autenticación de correos electrónicos.

2

Puede establecer la dirección desde la que se envía el correo electrónico, lo que se pondrá en la dirección Para: si alguien simplemente presiona 'Responder a'. Haz que sea único, y podrás saber de dónde vino y hacia dónde debe dirigirse.

Cuando se trata de poner un nombre al lado de "algo aquí", ponga algo que invite a que responda el correo. He visto una aplicación web importante, con Captura de correo electrónico que tiene "No responder", lo que hace que las personas realmente no envíen nada.

+0

Parece que el único enfoque de respuesta asume una gran cantidad de flexibilidad con la configuración de su servidor de correo. Tal vez otros puedan tener experiencia con este enfoque, así como otras alternativas si tiene un control limitado sobre su servidor de correo. O tal vez malinterpreto los requisitos para este enfoque. – Larsenal

+1

necesita algún control, o al menos el servidor de correo correcto en ejecución. Postfix, por ejemplo, permite '+ direccionamiento', por lo que [email protected] va a la misma cuenta que [email protected] Incluso la simple lectura de la cuenta POP3 que llegaría, daría la referencia única. –

1

EDIT: He entendido mal su pregunta.

Puede configurar su servidor de correo electrónico para capturar todo y generar una única dirección de respuesta. P.ej. [email protected]

Un proceso de sondeo en el servidor podría leer la bandeja de entrada y analizar la parte relevante del correo electrónico recibido, CS-2343434 podría significar el ID de ticket de soporte al cliente no. 2343434.

Implementé algo como esto usando JavaMail API.

Solo un pensamiento.

+0

Esto no es exactamente el tipo de cosa de la que estoy hablando. Estoy pensando en hacer clic en "Responder" en Outlook y hacer que tu aplicación pierda importancia en la respuesta del correo electrónico. Su respuesta simplemente ilustra la idea de insertar URLs significativas y específicas en el mensaje de correo electrónico. – Larsenal

0

Bose tiene un muy buen sistema en el que se incrustan una cola y el ID de entradas en el propio correo electrónico.

Mi empresa tiene el Case # tradicional en la línea de asunto, pero al CREAR un caso, requiere una cadena de caracteres específica "New Case" "Tech Support Issue" en el asunto para pasar por los filtros de correo no deseado.

Si el correo electrónico no coincide con la semántica de creación o actualización, el autoresponder envía un correo electrónico al destinatario demostrando cómo enviar correctamente un correo electrónico, o lo dirige a nuestros foros o sitio de soporte web.

Ayuda a eliminar el problema del correo no deseado y, sin embargo, sigue siendo accesible para un amplio público técnico que sigue dependiendo en gran medida del correo electrónico.

0

El spam va a ser un poco preocupante. Sin embargo, como está iniciando la conversación, puede usar la presencia de su identificador único (prefiero usar la línea del asunto: "Boleto de problema: no se puede iniciar sesión en la web ... [artf123456]") para filtrar el correo no deseado. Asegúrese de verificar el filtro en ocasiones ya que algunas personas manipulan el tema al responder.

0

El correo electrónico es un pozo negro de malos estándares y clientes rotos. Debes estar preparado para aceptar casi cualquier cosa como entrada. Tendrá que ser muy indulgente con los tipos de entrada que se toleran. Todo lo que sea fácil de programar probablemente sea difícil de usar para los usuarios. Considere los viejos programas de listas de correo que requieren que emita comandos en la línea de asunto. Solo los nerds hardcore pueden usarlos de manera efectiva. Y algunas de las cosas de CRM problem-ticket que mencionó tienen requisitos extraños, como forzar al usuario a responder entre dos marcadores de texto específicos en el texto. Ese tipo de cosas es confuso para las personas.

Tendrá que tratar con clientes de correo electrónico que le envían texto formateado en lugar de texto sin formato. Algunos clientes de correo electrónico todavía no manejan HTML correctamente (tos GMail) por lo que sus respuestas también deberán diseñarse adecuadamente. Hay varias formas en que las fotos pueden ser "cargadas" por correo electrónico, especialmente cuando se trata de teléfonos móviles. Tendrá que implementar varios hacks y heurísticas para hacer frente a estas situaciones.

También es muy posible que reciba un correo electrónico que es válido pero inutilizable en la biblioteca de análisis de correo electrónico que está utilizando. Si esto es o no lo suficientemente importante como para hacer lo propio, será una decisión.

Por último, otros han mencionado el uso de direcciones de correo electrónico específicas para identificar de forma única una "conversación". Esta es probablemente la forma más fácil de hacerlo, ya que el contenido del correo no suele sobrevivir a un viaje de ida y vuelta a un cliente. Sin embargo, prepárese para recibir correos electrónicos antiguos de viejos clientes que, en lugar de abrir un boleto nuevo de alguna manera, respondan a un boleto antiguo. Es probable que su aplicación necesite alguna forma de enviar correos electrónicos con una ID anterior a un nuevo caso, ya sea de forma manual o automática. Para un sistema de CRM, es muy probable que un usuario responda a un correo electrónico anterior, incluso si ya le envió un nuevo correo electrónico con una nueva identificación. En cuanto a si debe usar [email protected] o simplemente [email protected], me gustaría ir con este último porque el signo más confunde a algunos clientes de correo electrónico. Haga sus guías de ID o algo así y tenga alguna manera de validarlas (como un CRC o algo así) y obtendrá menos basura. Los seres humanos nunca deberían tener que escribir los GUID, solo responderlos. La desventaja es el filtrado de spam: la computadora de un usuario puede ver esas direcciones de correo electrónico como correo no deseado, y no habría una manera fácil de incluir en la lista las direcciones.

Lo que me recuerda: el envío de correos estos días está lleno de trampas. Hay muchas tecnologías anti-spam que hacen que sea extremadamente difícil para usted enviar correos electrónicos a sus clientes. Tendrá que investigar todo esto y debe tener cuidado y hacer algunas pruebas para asegurarse de que pueda comunicarse con los principales proveedores de correo electrónico. Un sitio web como Campaign Monitor puede ayudarlo si envía un correo electrónico.

1

La mejor manera de lograr esto será escribir un servicio de ventana que actúe como un cliente de correo [pop3 o imap]. Este servicio de Windows debe ejecutar una acción temporizada desencadenada por un temporizador, que se conecta al servidor de correo y sondea el servidor en busca de mensajes no leídos disponibles en la bandeja de entrada del correo electrónico. El ID de correo electrónico que se debe verificar es el ID del correo electrónico en el que los usuarios darán sus comentarios en/a. Si el cliente del servicio de Windows descubre que existe algún correo electrónico nuevo, debe descargar y filtrar el cuerpo del correo electrónico y seguir adelante para procesarlo en función de la entrada del usuario en el correo electrónico.Puede alojar el procesamiento de entrada en el mismo servicio de Windows, pero no es aconsejable hacerlo. El servicio de Windows puede colocar las entradas en un directorio de aplicación o base de datos especial desde donde su aplicación principal puede leer las entradas de usuario recibidas en el correo electrónico y procesarlas según sea necesario.

Se le pedirá que desarrolle un cliente TCP/IP de alto rendimiento para hacerlo. Le aconsejo que no use la biblioteca .Net predeterminada debido a problemas de rendimiento, sino que utilice una de las mejores implementaciones de código abierto TCP/IP de .NET para .Net como XF.Server desde kodart. hemos utilizado esto en nuestras aplicaciones y hemos obtenido resultados notablemente excepcionales.

Espero que esto ayude ..

Cuestiones relacionadas