这是我的代码
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封电子邮件,现在我的问题是某些收件人立即收到电子邮件,但有些收件人在几分钟后收到,其中一些收件人甚至在几小时后收到,其中许多人在到达之前就迷路了目的地。我的This Issue仍未得到答复。 我真的需要帮助。我卡住了。感谢
答案 0 :(得分:2)
请尝试以下操作:您的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
。我们知道它是一个对象。大多数事情都是。对象没有什么特别的了。
答案 1 :(得分:0)
实际上这是有道理的。您是否认为通过在很短的时间内发送60K电子邮件,您可能会被视为垃圾邮件发送者?延迟像StrongMail这样的电子邮件确实是阻止ISP被禁止的好方法。
答案 2 :(得分:0)
问题不在于您的代码,而在于您的SMTP服务器。
可能是任何数量的问题,例如无法在DNS服务器中找到MX记录(特别是如果您的DNS服务器很弱,并且无法快速处理查找)。
我会检查你的邮件服务器日志,作为发生了什么的一些迹象。