Utilizando SmtpClient
y MailMessage
classes en .NET para enviar correos electrónicos a través de un servidor de correo local (hMailServer), actualmente no encuentro forma de obtener el valor del encabezado Message-ID
de un mensaje enviado.¿Es posible capturar el "ID de mensaje" de un mensaje de correo electrónico enviado con SmtpClient?
La idea detrás de
Estoy tratando de localizar mediante programación mensajes que no se pueden entregar, así que tengo que encontrar una manera de identificar respuestas del servidor SMTP de destino que rechaza un determinado mensaje.
Ahora pensé simplemente en recordar el valor del encabezado SMTP Message-ID
y analizar los correos entrantes para este ID.
He intentado inspeccionar el Headers
collection después de enviar el mensaje, pero no encontré ningún Message-ID
.
Mi pregunta
¿Es posible obtener el valor Message-ID
cabecera que mi servidor SMTP agrega durante el envío de una instancia MailMessage
?
actualización 2012-05-27
Según this example He probado con éxito para generar manualmente un Message-ID
por mi cuenta, justo antes de enviar.
Todos mis ejemplos funcionan hasta el momento, por lo que parece que esta es una solución a mi pregunta.
Estoy bastante seguro de que el servidor SMTP asigna la identificación, y el protocolo SMTP no especifica devolver ese valor al cliente. Una forma de evitar esto sería enviar el mismo mensaje a BCC a una cuenta que usted controla, y extraer la identificación del mensaje de ese mensaje ... suponiendo que la identificación del mensaje se genera una vez, en el servidor SMTP inicial. Otra posibilidad es agregar una "X-tag" personalizada al correo electrónico. –
Gracias, @JeremyHolovacs - Ya he intentado agregar una etiqueta personalizada (no con el prefijo "X-", sin embargo) parece que esta etiqueta se pierde al reenviar o responder al mensaje. –
Lamentablemente, por http://stackoverflow.com/questions/7095104/how-to-confirm-that-mail-has-been-delivered-or-not no hay un método a prueba de balas para esto. –