System.Net.Mail和MailMessage不立即发送消息
本文关键字:消息 Net Mail MailMessage System | 更新日期: 2023-09-27 18:08:22
当我使用System.Net发送邮件时。邮件中,似乎没有立即发送的消息。它们需要一两分钟才能到达我的收件箱。一旦我退出应用程序,所有的消息都会在几秒钟内收到。是否有某种邮件消息缓冲区设置可以强制SmtpClient立即发送消息?
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);
}
谢谢,马克
如果您使用的是Dotnet 4.0
using (SmtpClient client = new SmtpClient(smtpServer))
{
MailMessage mail = new MailMessage();
// your code here.
client.Send(mail);
}
这将处理您的client
实例,导致它用QUIT协议元素结束其SMTP会话。
如果您使用的是较早的dotnet版本,请尝试为您的程序发送的每条消息重新使用相同的SmtpClient实例。
当然,请记住,电子邮件本质上是一个存储-转发系统,从smtp SEND到接收的延迟没有任何同步(甚至是正式可预测的)。我同意Ollie。回答你的问题,不,我不认为有任何缓冲设置,你可以通过一个表单设置。
你的问题令人困惑的是,你说邮件需要一两分钟才能到达你的收件箱,但接着又说当发送给你自己的时候,他们会立即通过…我相信你的意思是内部,消息发送良好,问题只发生在外部地址。在这种情况下,听起来可能是您的电子邮件服务器将这些消息排在绑定到外部地址的其他电子邮件后面(这是正常的活动)。在外部网站上等待一两分钟的邮件并不是很漫长的等待。
然而,这不太可能,但是您的交换服务器设置为扫描传出的消息吗?