[英]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.