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.
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
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. –