none
Mails enviados y no enviados utilizando System.Net.Mail RRS feed

  • 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,

     

    lunes, 30 de agosto de 2010 23:07

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
    martes, 31 de agosto de 2010 2:26
  • 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

    martes, 31 de agosto de 2010 14:10
    Moderador
  • 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
    martes, 31 de agosto de 2010 14:35
  • 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

    martes, 31 de agosto de 2010 21:09
    Moderador

  • 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
    martes, 31 de agosto de 2010 21:35

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
    martes, 31 de agosto de 2010 0:27
  • 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
    martes, 31 de agosto de 2010 2:26
  • 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

    martes, 31 de agosto de 2010 14:10
    Moderador
  • 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,

    martes, 31 de agosto de 2010 14:26
  • 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
    martes, 31 de agosto de 2010 14:35
  • 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

    martes, 31 de agosto de 2010 15:53
    Moderador
  •  

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

    martes, 31 de agosto de 2010 20:59
  • 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

    martes, 31 de agosto de 2010 21:09
    Moderador
  • En todo caso, si puedo hacer un programa de envio de mail masivos utilizando las clases de System.Net.Mail o simplemente no soporta para este caso.  Si es asi se enviarian los mails uno a uno o en bloques ....


    martes, 31 de agosto de 2010 21:29

  • 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
    martes, 31 de agosto de 2010 21:35
  • 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.

    viernes, 3 de septiembre de 2010 15:05
  • 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
    viernes, 28 de septiembre de 2012 11:35
  • 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

    viernes, 28 de septiembre de 2012 11:42
  • 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
    viernes, 28 de septiembre de 2012 11:45