簡體   English   中英

延遲接收從C#發送的電子郵件

[英]delay in receiving email sent from c#

這是我的代碼

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;
}

我正在使用此代碼發送超過60,000封電子郵件,現在我的問題是有些收件人立即收到電子郵件,但有些收件人在幾分鍾后收到,有些甚至在幾個小時后收到,並且可能有很多在到達目的地之前迷路了。 而我的“ 本期”仍未得到解答。 我真的需要幫助。 我被困住了。 謝謝

請嘗試以下操作:您的MailMessage必須位於using塊中。 另外,您無需為每個消息都使用一個新的SmtpClient 您當然不需要將其設置為null! 這不是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);
    }
}

建議:不要為變量命名,例如oMail 我們知道這是一個對象。 大多數事情都是。 對象不再有特殊之處。

其實這是有道理的。 您不認為在很短的時間內發送6萬封電子郵件可能會被視為垃圾郵件發送者嗎? 像StrongMail一樣延遲電子郵件是防止您被ISP禁止的好方法。

該問題不太可能與您的代碼有關,而與您的SMTP服務器有關。

可能有很多問題,例如無法在DNS服務器中找到MX記錄(尤其是如果您的DNS服務器很弱,並且無法快速處理查找)。

我會檢查您的郵件服務器日志,以指示發生了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM