在C#/.NET中发送电子邮件的新连接

本文关键字:新连接 连接 电子邮件 NET | 更新日期: 2023-09-27 18:25:03

我在发送电子邮件时遇到问题。网络主机/电子邮件主机指示我在一次连接中发送的电子邮件不能超过10封。我使用以下代码发送了30-40封电子邮件:

SmtpClient emailServer = new SmtpClient("Server");
emailServer.Credentials = new System.Net.NetworkCredential("Username", "Password");
for (int iCount = 0; iCount < listEmail.Count; iCount++)
{
   MailMessage email = new MailMessage();
   email.From = new MailAddress("from");
   email.Subject = "Subject";
   email.To.Add(listEmail[iCount]);
   emailServer.Send(email);
}

但现在如果我把代码

SmtpClient emailServer = new SmtpClient("Server");
emailServer.Credentials = new System.Net.NetworkCredential("Username", "Password");

for循环中类似:

for (int iCount = 0; iCount < listEmail.Count; iCount++)
{    
   SmtpClient emailServer = new SmtpClient("Server");
   emailServer.Credentials = new System.Net.NetworkCredential("Username", "Password");
   MailMessage email = new MailMessage();
   email.From = new MailAddress("from");
   email.Subject = "Subject";
   email.To.Add(listEmail[iCount]);
   emailServer.Send(email);
}

那么它会在每次发送电子邮件时与服务器建立新的连接吗?或者,在创建新连接之前,我应该等待几分钟以确保以前的连接过期吗?我的意思是,我不知道如何为我发送的每封电子邮件创建新的连接,也不知道如何确保我通过与电子邮件服务器的新连接发送每封电子邮件。

在C#/.NET中发送电子邮件的新连接

将代码更改为以下内容:

using (var emailServer = new SmtpClient("Server"))
{
   emailServer.Credentials = new System.Net.NetworkCredential("Username", "Password");
   MailMessage email = new MailMessage();
   email.From = new MailAddress("from");
   email.Subject = "Subject";
   email.To.Add(listEmail[iCount]);
   emailServer.Send(email);
}

然后您可以确定连接将被关闭。试着总是对一次性对象使用using语句,以确保在完成后所有内容都被清除。

相关文章: