加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – System.Net.Mail和MailMessage不立即发送消息

发布时间:2020-12-15 04:27:10 所属栏目:百科 来源:网络整理
导读:当我使用System.Net.Mail发送邮件时,似乎邮件不会立即发送.他们在到达我的收件箱之前需要一两分钟.一旦我退出应用程序,所有消息都会在几秒钟内收到.是否有某种邮件消息缓冲区设置可以强制SmtpClient立即发送消息? public static void SendMessage(string sm
当我使用System.Net.Mail发送邮件时,似乎邮件不会立即发送.他们在到达我的收件箱之前需要一两分钟.一旦我退出应用程序,所有消息都会在几秒钟内收到.是否有某种邮件消息缓冲区设置可以强制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);
}

这将废弃您的客户端实例,使其使用QUIT协议元素包装其SMTP会话.

如果您遇到早期的dotnet版本,请尝试安排为程序发送的每条消息重复使用相同的SmtpClient实例.

当然,请记住,电子邮件本质上是一个存储转发系统,并且没有任何关于从smtp SEND到接收的延迟同步(甚至可以正式预测).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读