Pregunta

Aquí está mi código

for(int i = 0; i < number ; i++)
{
  MailAddress to = new MailAddress(iMail.to);
  MailAddress from = new MailAddress(iMail.from, iMail.displayName);
  string body = iMail.body;
  string subject = iMail.sub;
  oMail = new MailMessage(from, to);
  oMail.Subject = subject;
  oMail.Body = body;
  oMail.IsBodyHtml = true;
  oMail.Priority = MailPriority.Normal;
  oMail.Sender = from;
  s = new SmtpClient(smtpServer);
  s.ServicePoint.ConnectionLeaseTimeout = 0;
  if (s != null)
  {
     s.Send(oMail);
  }
  oMail.Dispose();
  s = null;
}

Estoy enviando más de 60.000 e-mail usando este código, ahora mi problema alguno destinatario recibe correo electrónico de inmediato, pero algunos de ellos obtiene después de unos minutos y algunos de los sufran incluso después de unas horas y puede ser muchos de ellos se pierde antes de llegar a destino. y mi este número todavía sin respuesta. realmente necesito ayuda en este. Estoy atascado. gracias

¿Fue útil?

Solución

En realidad eso tiene sentido. ¿No te parece que mediante el envío de correos electrónicos 60K en un plazo muy corto su son susceptibles de ser considerados como un spammer? El retraso de los mensajes de correo electrónico como StrongMail hace es una buena manera de evitar que ser prohibido por los proveedores de Internet.

Otros consejos

Trate lo siguiente: su MailMessage necesita estar en un bloque using. Además, no es necesario un nuevo SmtpClient para cada mensaje. Por cierto, no hay que establecen a NULL! Esto no es VB6.

SmtpClient smtpClient = new SmtpClient(smtpServer);
smtpClient.ServicePoint.ConnectionLeaseTimeout = 0;
for (int i = 0; i < number; i++)
{
    MailAddress to = new MailAddress(iMail.to);
    MailAddress from = new MailAddress(iMail.from, iMail.displayName);
    string body = iMail.body;
    string subject = iMail.sub;
    using (MailMessage mailMessage = new MailMessage(from, to))
    {
        mailMessage.Subject = subject;
        mailMessage.Body = body;
        mailMessage.IsBodyHtml = true;
        mailMessage.Priority = MailPriority.Normal;
        mailMessage.Sender = from;
        smtpClient.Send(mailMessage);
    }
}

Sugerencia: no nombrar las variables cosas como oMail. We saber Es un objeto. La mayoría de las cosas son. No hay nada especial acerca de los objetos más.

el problema no es probable que con su código, pero con su servidor SMTP.

Podría ser cualquier número de temas, como la de no poder encontrar los registros MX en el servidor de DNS (especialmente si su servidor DNS es débil, y no puede manejar las búsquedas que dan rápido).

Me gustaría comprobar los registros del servidor de correo, como alguna indicación en cuanto a lo que está sucediendo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top