Principales respuestas
Mails enviados y no enviados utilizando System.Net.Mail

Pregunta
-
Buenas tardes,
Tengo una pregunta,,, puedo yo saber qué email fue enviado correctamente y qué mail no fue enviado correctamente (por diversos motivos, como por ejemplo mail destino incorrecto, error de smtp aunque creo que esto lo puedo manejar con excepción). Un caso, yo envié un correo electrónico a una direcciom que no existe y la función Smtp.Send no me generó ninguna excepción.
Gracias de antemamo por su ayuda,
Respuestas
-
hola
el uso del protocolo de SMTP no informa del incorrecto envio de un mail cuando la direccion esta incorrecta, ya que este solo se remite a enviar el mail, es el servidor que recibe ese mensaje al no poder resolver la casilla que enviara una notificacion informando de destinatario incorrecto
es mas, puedes hacer la prueba usan el correo normal he intenta envia un mail a una direccion que no exista, veras que el mail sale, pero al rato te llegara la notificacion, pero no es el SMTP quien sabe esto, sino que es el otro servidor que recibe el mensaje y no puede ubicarlo quien envia la respuesta automatica
el uso del evento SendComplete te informara que se envio el mail, pero esto no asegura que haya llegado correctamente a destino, la unica forma de saberlo es que verifiques la cuenta desde la cual has enviado ese mail y verifiques que no tienes un mail de rechazo
el protocolo SMTP hace el mejor esfuerzo por dejar el mensaje pero sera el destinatario quien lo ubicara donde corresponda, por lo tanto la responsabilidad del protocolo termina cuando concluyo la transmision, lo cual no asegura que llegara a la casilla finalmente, pero el mensaje si se transmitio completo
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 14:08
- Marcado como respuesta josant83 viernes, 3 de septiembre de 2010 15:05
-
En adicion a lo que comenta leandro, debes hablar con el personal de IT de tu empresa para que asignen un buzon a la direccion de correo desde la cual haces los envios, alli llegan los correos rebote en un tiempo que sino estoy mal no es superior a 72 horas.
entonces lo que podrias hacer es realizar analisis de esos correos ya que en ellos se encuentra la descripcion de los errores geneados por los cuales no se pudo hacer entrega de correos.
Juan Carlos Ruiz - Microsoft MVP Visual C#
Sígueme en Twitter: @JuanKRuiz
Visita mi blog: C#, XNA, Win32 - http://juank.black-byte.com
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 14:10
- Marcado como respuesta josant83 viernes, 3 de septiembre de 2010 15:06
-
hola
puedo leer el buzón del remitente
se supone el mail que envia es conocido por ti, por lo tanto la informacion de acceso la tendrias
dependiente de que sistema de mail que usenpuede variar como lean los corres de ese mail
http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/c2ae3643-99eb-4356-a85e-c827492bef83
puede ser por POP3 o IMAP, o quizas usando als API de Ofice para OutLook, como veras hay varias alterntivas
cual es la mejor opción para poder enviar mail masivos
por lo general lo mail masivos si son informativos no validan si llego correctamente o no el mail, lo envia simplemente confiando que la info disponible es valida, pero bueno cada implementacion puede variar
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 15:53
- Marcado como respuesta josant83 viernes, 3 de septiembre de 2010 15:06
-
no te sera util y en todo caso requeriria de lo mismo que te he explicado para mirar cuales llegan y cuales no.
importante que tu app de email massivos cada N tiempo cambie su direccion de email para evitar bloqueos por spammer, una alternativa seria que modificaras el header SMTP para que respondan a otra direccion de correo mientras que la direccion de la que envias es gebnerada aleatoriamente.
Juan Carlos Ruiz - Microsoft MVP Visual C#
Sígueme en Twitter: @JuanKRuiz
Visita mi blog: C#, XNA, Win32 - http://juank.black-byte.com
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 21:10
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 3 de septiembre de 2010 15:09
-
si quieres enviarlos sin que el resto se entere que tambien recibio mail deberias enviarlo de a uno, asignado la propiedad "To" del MailMessage con cada destinatarios y enviando, o sea es una operacion unicaria en un ciclosi quieres que el servidor de SMTP se encarga carga la lista completa en el "To" y lo envias, pero aqui todos los usuario que reciban el mail veran los demas usuario que figuran en la lista de destinatarios, pero aqui envias en bloque
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator jueves, 2 de septiembre de 2010 16:42
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 3 de septiembre de 2010 15:09
Todas las respuestas
-
Hola, puedes hacer uso del evento SendCompleted.
SmtpClient client = new SmtpClient(); client.SendCompleted += ClientSendCompleted; client.Send(message);
Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
Proyecto en Codeplex
World Wide Finalist Imagine Cup 2007
C#, WPF, WCF
LinkedIn -
hola
el uso del protocolo de SMTP no informa del incorrecto envio de un mail cuando la direccion esta incorrecta, ya que este solo se remite a enviar el mail, es el servidor que recibe ese mensaje al no poder resolver la casilla que enviara una notificacion informando de destinatario incorrecto
es mas, puedes hacer la prueba usan el correo normal he intenta envia un mail a una direccion que no exista, veras que el mail sale, pero al rato te llegara la notificacion, pero no es el SMTP quien sabe esto, sino que es el otro servidor que recibe el mensaje y no puede ubicarlo quien envia la respuesta automatica
el uso del evento SendComplete te informara que se envio el mail, pero esto no asegura que haya llegado correctamente a destino, la unica forma de saberlo es que verifiques la cuenta desde la cual has enviado ese mail y verifiques que no tienes un mail de rechazo
el protocolo SMTP hace el mejor esfuerzo por dejar el mensaje pero sera el destinatario quien lo ubicara donde corresponda, por lo tanto la responsabilidad del protocolo termina cuando concluyo la transmision, lo cual no asegura que llegara a la casilla finalmente, pero el mensaje si se transmitio completo
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 14:08
- Marcado como respuesta josant83 viernes, 3 de septiembre de 2010 15:05
-
En adicion a lo que comenta leandro, debes hablar con el personal de IT de tu empresa para que asignen un buzon a la direccion de correo desde la cual haces los envios, alli llegan los correos rebote en un tiempo que sino estoy mal no es superior a 72 horas.
entonces lo que podrias hacer es realizar analisis de esos correos ya que en ellos se encuentra la descripcion de los errores geneados por los cuales no se pudo hacer entrega de correos.
Juan Carlos Ruiz - Microsoft MVP Visual C#
Sígueme en Twitter: @JuanKRuiz
Visita mi blog: C#, XNA, Win32 - http://juank.black-byte.com
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 14:10
- Marcado como respuesta josant83 viernes, 3 de septiembre de 2010 15:06
-
RodFraga, Leandro y Juan Carlos gracias por contestar. Entiendo muy bien lo que me indican, ahora mi pregunta sería si yo desde programación (más explícitamente desde .Net) puedo leer el buzón del remitente (a donde llegarían los mail rechazados) y cuantificar el número de mails que no se pudieron enviar. Les explico, en mi empresa estamos validando cual es la mejor opción para poder enviar mail masivos y poder sacar una estadística de cuantos mail se pudieron enviar correctamente y cuantos no. Entonces esa es una de las dudas que tenemos, y si lo podemos hacer por .Net o si tienen una aplicación Web en el mercado que haga lo que les explique, les quedaría muy agradecidos.
Gracias de antemano,
-
hola
puedo leer el buzón del remitente
se supone el mail que envia es conocido por ti, por lo tanto la informacion de acceso la tendrias
dependiente de que sistema de mail que usenpuede variar como lean los corres de ese mail
http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/c2ae3643-99eb-4356-a85e-c827492bef83
puede ser por POP3 o IMAP, o quizas usando als API de Ofice para OutLook, como veras hay varias alterntivas
cual es la mejor opción para poder enviar mail masivos
por lo general lo mail masivos si son informativos no validan si llego correctamente o no el mail, lo envia simplemente confiando que la info disponible es valida, pero bueno cada implementacion puede variar
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 15:53
- Marcado como respuesta josant83 viernes, 3 de septiembre de 2010 15:06
-
de acuerdo con leandro
Juan Carlos Ruiz - Microsoft MVP Visual C#
Sígueme en Twitter: @JuanKRuiz
Visita mi blog: C#, XNA, Win32 - http://juank.black-byte.com
-
Gracias por la explicación, he estado revisando una aplicación que me podría ayudar con ese tema sin la necesidad de Desarrollar un nuevo programa. He visto que el Microsoft Dinamycs CRM tiene una opción para poder enviar mail masivos. Para el fin q estoy buscando ustedes creen que sí me sería útil.....
-
no te sera util y en todo caso requeriria de lo mismo que te he explicado para mirar cuales llegan y cuales no.
importante que tu app de email massivos cada N tiempo cambie su direccion de email para evitar bloqueos por spammer, una alternativa seria que modificaras el header SMTP para que respondan a otra direccion de correo mientras que la direccion de la que envias es gebnerada aleatoriamente.
Juan Carlos Ruiz - Microsoft MVP Visual C#
Sígueme en Twitter: @JuanKRuiz
Visita mi blog: C#, XNA, Win32 - http://juank.black-byte.com
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator martes, 31 de agosto de 2010 21:10
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 3 de septiembre de 2010 15:09
-
-
si quieres enviarlos sin que el resto se entere que tambien recibio mail deberias enviarlo de a uno, asignado la propiedad "To" del MailMessage con cada destinatarios y enviando, o sea es una operacion unicaria en un ciclosi quieres que el servidor de SMTP se encarga carga la lista completa en el "To" y lo envias, pero aqui todos los usuario que reciban el mail veran los demas usuario que figuran en la lista de destinatarios, pero aqui envias en bloque
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator jueves, 2 de septiembre de 2010 16:42
- Marcado como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator viernes, 3 de septiembre de 2010 15:09
-
Creo que voy a tener que hacer dos programas independientes, uno que me envíe los correos electrónicos masivos utilizando el System.Net.Mail y otro para leer los correos que no pudieron llegar. Además por lo visto tengo que hacer pruebas de carga con el servidor SMTP para ver cuantos envíos diarios soporta. La idea es de enviar diario unos 10.000 correos ya que en total son 70.000 mails para enviar.
Gracias por la información proporcionada.
-
Hola Juan Carlos...
No entiendo tu comentarios, cada cuanto tiempo debe cambiar el email massivo? o cada cuantos email enviados? para evitar los spammer... En mi caso Tengo 2000 usuarios y a cada uno la infromacion es diferente, por lo que me toca enviar uno a uno..
Gracias
- Editado jomabero300 viernes, 28 de septiembre de 2012 11:46
-
Hola Leandro
Haber leandro yo tengo que enviuarle a por lo menos 2000 usuarios y me toa uno a uno pues hay infromacion unica para cada uno, la pregunta es la siguiente: ¿si envio uno a uno este no se me demora mucho enviando todos? o cual seria la mejor opcion para hacerlo con 2000 usuarios o email?
Te agradzco
si quieres enviarlos sin que el resto se entere que tambien recibio mail deberias enviarlo de a uno, asignado la propiedad "To" del MailMessage con cada destinatarios y enviando, o sea es una operacion unicaria en un ciclo
si quieres que el servidor de SMTP se encarga carga la lista completa en el "To" y lo envias, pero aqui todos los usuario que reciban el mail veran los demas usuario que figuran en la lista de destinatarios, pero aqui envias en bloque
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
Hola Leandro
Haber leandro yo tengo que enviuarle a por lo menos 2000 usuarios y me toca uno a uno pues hay infromacion unica para cada uno, la pregunta es la siguiente: ¿si envio uno a uno este no se me demora mucho enviando todos o sean bloqueos por spammer como comenta Juan Carlos? o cual seria la mejor opcion para hacerlo con 2000 usuarios o email?
Te agradzco
- Editado jomabero300 viernes, 28 de septiembre de 2012 11:46