scn*_*iro 6 c# multithreading smtp
我开发了一个主要使用SMTP发送电子邮件的应用程序.一个接一个地发送消息很好,但是我希望加快这个过程.我创建了多个SmtpClient
以及消息的实例,以避免彼此之间的冲突.由于单独的实例,我假设.Send()
在多个线程上执行会很好.但是,Thread
单独使用我的代码不能正常工作,因为我无法使用此代码在一个线程上发送一封电子邮件.我只是收到一个模糊的"Failure sending mail"
例外.我将发布有效的代码,Thread
但这不起作用.有人可以分享他们认为可能是原因吗?
注意我目前不打算使用更新的async
功能,而是利用它Thread
工作宣言和方法电话:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
SMTP.Send(message);
}
Run Code Online (Sandbox Code Playgroud)
NOT Working Thread声明和方法调用:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
Thread T1 = new Thread(delegate() { SMTP.Send(message); } );
T1.Start();
}
Run Code Online (Sandbox Code Playgroud)
小智 12
解决了:
var SMTP = new SmtpClient
{
Host = txtBxSenderHost.Text,
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(strSenderAddress, strSenderPassword)
};
Thread T1 = new Thread(delegate()
{
using (var message = new MailMessage(senderAdrress, toAddress)
{
Subject = strSubject,
Body = strBody
})
{
{
SMTP.Send(message);
}
}
});
T1.Start();
Run Code Online (Sandbox Code Playgroud)