我在我的mvc-helper类中发送新闻通讯(大约给5000人)时遇到了问题。
大约发送了1300封电子邮件后,我的IIS出现了以下错误:
我该如何解决这个问题?我需要这个新闻通讯系统...
public static void SendNewsletter(string fromAccount, string subject, string eMailText)
{
var userEMailAddresses = new List<string>();
using (var dbContext = new dbEntities())
{
userEMailAddresses =
dbContext
.User
.Where(w =>
!w.IsDeactivated &&
!w.IsBlacklisted)
.Select(s =>
s.UserName)
.ToList();
}
new Thread(() =>
{
for (int i = 0; i < userEMailAddresses.Count; i++)
{
SendMail(fromAccount, userEMailAddresses[i], subject, eMailText);
}
}).Start();
}
这是一个将在控制器中调用的函数。下面是发送函数的代码块:
public static void SendMail(string fromAccount, string toAccount, string subject, string eMailText)
{
var fromEmailAddress = new EMailModel(fromAccount);
var body = string.Empty;
using (var sr = new StreamReader(HostingEnvironment.MapPath("\\App_Data\\Templates\\") + "EMailTemplate.txt"))
{
body = sr.ReadToEnd();
}
body = body.Replace("%%Subject%%", subject);
body = body.Replace("%%Body%%", eMailText);
body = body.Replace("%%Year%%", DateTime.Now.Year.ToString());
using (MailMessage mail = new MailMessage(fromEmailAddress.EMailAddress, toAccount))
{
mail.Subject = subject;
mail.Body = WebUtility.HtmlDecode(body);
mail.IsBodyHtml = true;
using (SmtpClient smtp = new SmtpClient(Statics.SmtpClient, Statics.SmtpPort))
{
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential(fromEmailAddress.EMailAddress, fromEmailAddress.Password);
smtp.EnableSsl = Statics.SslEnabled;
try
{
smtp.Send(mail);
Thread.CurrentThread.Join(1000);
}
catch (Exception ex) {
throw ex;
}
}
}
}
大约发送了1300封电子邮件后,我的IIS出现了以下错误:
![ErrorImage](https://istack.dev59.com/QrPIg.webp)
Thread.CurrentThread.Join(1000);
??? - Falco Alexander