net mail library kit example c# smtp smtpclient system.net.mail mailmessage

c# - library - System.Net.Mail y MailMessage no envían mensajes inmediatamente



smtpclient c# gmail (2)

Estoy de acuerdo con Ollie. Para responder a su pregunta, no, no creo que haya ninguna configuración de búfer que pueda establecer a través de un formulario.

Lo que es confuso acerca de tu pregunta es que dices que el mensaje tarda uno o dos minutos en llegar a tu bandeja de entrada, pero luego sigues diciendo que cuando te envías a ti mismo, pasan instantáneamente ... Creo que querías decir que internamente, los mensajes se envían bien y el problema solo ocurre para la dirección externa. En este caso, parece que tal vez su servidor de correo electrónico haga que estos mensajes estén detrás de otros correos electrónicos destinados a direcciones externas (que es actividad normal). Esperar un minuto o dos para recibir un correo electrónico en un sitio externo no es una espera larga.

Sin embargo, esto es poco probable, pero ¿está configurado su servidor de intercambio para analizar los mensajes salientes?

Cuando envié un correo usando System.Net.Mail, parece que los mensajes no se envían inmediatamente. Tardan uno o dos minutos antes de llegar a mi bandeja de entrada. Una vez que salgo de la aplicación, todos los mensajes se reciben en segundos. ¿Hay algún tipo de configuración del búfer de mensajes de correo que pueda obligar a SmtpClient a enviar mensajes de forma inmediata?

public static void SendMessage(string smtpServer, string mailFrom, string mailFromDisplayName, string[] mailTo, string[] mailCc, string subject, string body) { try { string to = mailTo != null ? string.Join(",", mailTo) : null; string cc = mailCc != null ? string.Join(",", mailCc) : null; MailMessage mail = new MailMessage(); SmtpClient client = new SmtpClient(smtpServer); mail.From = new MailAddress(mailFrom, mailFromDisplayName); mail.To.Add(to); if (cc != null) { mail.CC.Add(cc); } mail.Subject = subject; mail.Body = body.Replace(Environment.NewLine, "<BR>"); mail.IsBodyHtml = true; client.Send(mail); } catch (Exception ex) { logger.Error("Failure sending email.", ex); }

Gracias,

marca


Intenta esto, si estás en Dotnet 4.0

using (SmtpClient client = new SmtpClient(smtpServer)) { MailMessage mail = new MailMessage(); // your code here. client.Send(mail); }

Esto eliminará su instancia de client , haciendo que finalice su sesión SMTP con un elemento de protocolo QUIT.

Si está atascado en una versión anterior de dotnet, intente volver a utilizar la misma instancia de SmtpClient para cada mensaje que envíe su programa.

Por supuesto, tenga en cuenta que el correo electrónico es intrínsecamente un sistema de almacenamiento y reenvío, y no hay nada síncrono (o incluso predecible formalmente) sobre los retrasos desde smtp SEND hasta la recepción.