我用System.Net.Mail.SmtpClient 的 SendAsync()循环发送邮件,为什么发送一段时间后,就发送失败了
我用多线程,调用System.Net.Mail.SmtpClient 的 SendAsync()循环发送邮件,为什么发送一段时间后,就发送开始都失败了,
重启应用后,又能继续发了,为什么?
public int SendMailByNetMail()
{
//System.Net.Mail.MailMessage myEmail = new System.Net.Mail.MailMessage(MailServerMailID, ToMailID);
System.Net.Mail.MailMessage myEmail = new System.Net.Mail.MailMessage(MailServerUserName, ToMailID);
myEmail.Subject = Subject;
myEmail.Body = SBody;
myEmail.Priority = MailPriority.High ;
myEmail.IsBodyHtml = true; //邮件形式,.Text、.Html
System.Net.Mail.SmtpClient smtpclient = new SmtpClient();
smtpclient.Host = MailServerHost ;
smtpclient.Port = Convert.ToInt32(MailServerPort) ;
smtpclient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpclient.Credentials = new System.Net.NetworkCredential(MailServerMailID, MailServerPassWord);
if (MailNeedSSL == "1")
{
smtpclient.EnableSsl = true;
}
smtpclient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
try
{
smtpclient.SendAsync(myEmail,"");
return 1;
}
catch (Exception ex)
{
string ss = ex.Message;
smtpclient.SendAsyncCancel();
return 2;
}
myEmail.Dispose();
return 1;
}
/// <summary>
/// 发送邮件后,处理相应的收件人表,发件人表的状态
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
// Get the unique identifier for this asynchronous operation.
if (FromID != "" && ToID != "")
{
String token = (string)e.UserState;
int bstate = 0;
if (e.Error != null)
{
bstate = 2;
PublicVariable.IFalseMailCount = PublicVariable.IFalseMailCount + 1;
}
else
{
bstate = 1;
PublicVariable.ITrueMailCount = PublicVariable.ITrueMailCount + 1;
}
if(PublicVariable.IsTestMail==0)
MailDataTable.UpdateFromANDToData(FromID, ToID, bstate.ToString(),CheapCardID);//错误并更新数据库 合并成存储过程
PublicVariable.INowMailCount = PublicVariable.INowMailCount + 1+PublicVariable.SendMailChaoSongNum ;
DataTable dt = PublicVariable.BackViewInfo;
DataRow dr = dt.NewRow();
dr.ItemArray = new string[8] { MailServerUserName, MailServerMailID, MailServerHost, MailServerPort, ToMailID, iNowCiChaoSongNum.ToString(), (bstate==1?"成功":"失败"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") };
dt.Rows.InsertAt(dr, 0);
if (dt.Rows.Count > 100)
{
dt.Rows.RemoveAt(dt.Rows.Count - 1);
}
PublicVariable.BackViewInfo = dt;
}
}