我有一个.NET服务,它会在后台线程处理队列中的数据,并从队列中发送大量的小型电子邮件消息,速度非常快(如果可能的话,每秒100封电子邮件)。目前,我使用
每次调用
SmtpClient.Send()
方法进行发送,但我担心这样会影响性能。每次调用
Send()
都需要打开套接字,执行SMTP会话(HELO、MAIL FROM、RCPT TO、DATA)然后关闭套接字。以下是伪代码:for each message {
open socket
send HELO
send MAIL FROM
send RCPT TO
send DATA
send QUIT
close socket
}
(编辑:我在我的答案中已经解释,关于SmtpClient.Send()
的这个说法是错误的。)
我认为下面的伪代码更加优化:
open socket
send HELO
for each message {
send MAIL FROM
send RCPT TO
send DATA
}
send QUIT
close socket
当以高频率发送电子邮件时,我是否应该关注SmtpClient.Send()
的性能?我有哪些优化性能的选项?