none
Envio masivo de correos RRS feed

  • Pregunta

  • Hola a todos, cual es la mejor forma de enviar una gran cantidad de correos, a diferentes usuarios? en estos momentos estoy usando este código, pero veo que después de un rato que halla empezado a enviar los correos, lo deja de hacer sin sacar ninguna excepcion. gracias por la ayuda

    MailMessage miMensaje = new MailMessage();
                miMensaje.From = new MailAddress("correoRemitente@outlook.com", "remitente", Encoding.UTF8);
    
    miMensaje.To.Add("correo1@outlook.com");
    miMensaje.To.Add("correo2@outlook.com");
    
    miMensaje.Subject = "asunto";
    miMensaje.Body = "xxxxxxxxxxxxxx";
    miMensaje.BodyEncoding = Encoding.UTF8;
    
    SmtpClient client = new SmtpClient();
    client.Credentials = new System.Net.NetworkCredential("correoRemitente@outlook.com", "clave"); 
    client.Port = 587;
    client.Host = smtp.office365.com; 
    client.EnableSsl = true;
    client.Timeout = 1999999;
    
    try
    {
      client.Send(miMensaje);
    }
    catch (System.Net.Mail.SmtpException ex)
    {
      Console.WriteLine(ex.Message);
      Console.ReadLine();
    }

    Muchas gracias por su ayuda.


    zambrano

    lunes, 7 de septiembre de 2015 14:35

Respuestas

  • Es posible que el servidor este interpretando tu envió masivo como un ataque, revisa si no tienes alguna restricción en ese sentido

    Ing. Carlos Monroy MCP, MCAD, MCSD, MCTS

    • Marcado como respuesta Manuel Zambrano lunes, 7 de septiembre de 2015 20:01
    lunes, 7 de septiembre de 2015 16:18
  • hola

    >>yo tengo un ciclo y por cada iteracion mando el correo a tres cuentas diferentes, adjuntando 2 archivos, es posible que el método Send() deje de funcionar?

    pero a todos los correos envias el mismo mail con el mismo attach ? si es asi realizar un send dentro del ciclo esta mal

    el send deberia ser uno solo y en el ciclo añades los mail a la lista de Bcc del MailMessage

    de esta forma envia el mismo mail y es el servidor de correo quien los distribuye a todos los destinatarios de la Bcc, o sea los envia co copia oculta, quie recibe el mail no sabe a quien mas le llego

    >>lo que pasa es que me reportar de que los correos no están llegando,

    valida que el correo sea valido y que no este bloqueado por el servidor del cliente, podrias pedirle al usuario una cuenta alternativa para ver si a esa le llega

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 7 de septiembre de 2015 17:44
  • hola

    >>Todos los correos son diferentes, adjunto siempre un archivo diferente

    bueno en ese caso usar el Bcc no aplicaria

    podrias intentar si el tema de ciclar podria causar que el servidor de smtp que llegue a procesar todos los mensajes y pierda algunos

    podrias ver si procesar de a bloques de 50 y esperar un tiempo usando el Thread.Sleep(5000) o sea 5 seg para continuar

    a veces darle tiempo al smtp haria que procesa todos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Manuel Zambrano lunes, 7 de septiembre de 2015 20:01
    lunes, 7 de septiembre de 2015 19:38

Todas las respuestas

  • hola

    >>cual es la mejor forma de enviar una gran cantidad de correos, a diferentes usuarios?

    podrias asignar la lista de mail en la propiedad

    MailMessage.Bcc

    de esta forma puedes enviar el mismo mail a muchos destinatarios de forma oculta, sin que puedan ver a quien mas se lo envias

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 7 de septiembre de 2015 15:32
  • Hola Leandro, gracias por responder,

    Si yo tengo un ciclo y por cada iteracion mando el correo a tres cuentas diferentes, adjuntando 2 archivos, es posible que el método Send() deje de funcionar? (este método lo tengo en una clase estática), lo que pasa es que me reportar de que los correos no están llegando, pero he echo la prueba en debug, y veo que los correos si salen.

    Gracias.


    zambrano

    lunes, 7 de septiembre de 2015 16:06
  • Es posible que el servidor este interpretando tu envió masivo como un ataque, revisa si no tienes alguna restricción en ese sentido

    Ing. Carlos Monroy MCP, MCAD, MCSD, MCTS

    • Marcado como respuesta Manuel Zambrano lunes, 7 de septiembre de 2015 20:01
    lunes, 7 de septiembre de 2015 16:18
  • hola

    >>yo tengo un ciclo y por cada iteracion mando el correo a tres cuentas diferentes, adjuntando 2 archivos, es posible que el método Send() deje de funcionar?

    pero a todos los correos envias el mismo mail con el mismo attach ? si es asi realizar un send dentro del ciclo esta mal

    el send deberia ser uno solo y en el ciclo añades los mail a la lista de Bcc del MailMessage

    de esta forma envia el mismo mail y es el servidor de correo quien los distribuye a todos los destinatarios de la Bcc, o sea los envia co copia oculta, quie recibe el mail no sabe a quien mas le llego

    >>lo que pasa es que me reportar de que los correos no están llegando,

    valida que el correo sea valido y que no este bloqueado por el servidor del cliente, podrias pedirle al usuario una cuenta alternativa para ver si a esa le llega

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 7 de septiembre de 2015 17:44
  • Gracias, por tu respuesta, mirare si tiene alguna configuración para eso.

    zambrano

    lunes, 7 de septiembre de 2015 18:40
  • Hola leandro,

    Todos los correos son diferentes, adjunto siempre un archivo diferente, y  adjunto los correos que normalmente son 3, dos que son del usuario y uno que es el alternativo para saber si llega o no el correo.



    zambrano

    lunes, 7 de septiembre de 2015 18:51
  • hola

    >>Todos los correos son diferentes, adjunto siempre un archivo diferente

    bueno en ese caso usar el Bcc no aplicaria

    podrias intentar si el tema de ciclar podria causar que el servidor de smtp que llegue a procesar todos los mensajes y pierda algunos

    podrias ver si procesar de a bloques de 50 y esperar un tiempo usando el Thread.Sleep(5000) o sea 5 seg para continuar

    a veces darle tiempo al smtp haria que procesa todos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Manuel Zambrano lunes, 7 de septiembre de 2015 20:01
    lunes, 7 de septiembre de 2015 19:38
  • Entiendo, muchas gracias, voy crear un tiempo de espera haber si soluciona.

    Gracias.


    zambrano

    lunes, 7 de septiembre de 2015 20:01