我有一个类似的问题,这让我疯狂地试图弄清楚是什么让一些电子邮件变慢而另一些电子邮件变快。
创建 SmtpClient 后发送的第一封电子邮件需要 5 秒。之后,重用同一个 SmtpClient,如果在前一个的 60 秒内完成,大约需要 0.4 秒。之后,我认为它会释放它与池的连接。
但是,添加与收件人地址重复的抄送总是会额外增加 5 秒。添加重复的 CC 两次将增加 10 秒。
我没有检查,但我认为如果重复项在“TO”或“BCC”列表中也是如此。
这是删除重复项的代码:
// check and remove duplicates
for (int x = 0; x < message.To.Count; x++)
{
for (int y = message.To.Count - 1; y > x; y--)
{
if (message.To[y].Address == message.To[x].Address)
message.To.RemoveAt(y);
}
for (int y = message.CC.Count - 1; y >= 0; y--)
{
if (message.CC[y].Address == message.To[x].Address)
message.CC.RemoveAt(y);
}
for (int y = message.Bcc.Count - 1; y >= 0; y--)
{
if (message.Bcc[y].Address == message.To[x].Address)
message.Bcc.RemoveAt(y);
}
}
for (int x = 0; x < message.CC.Count; x++)
{
for (int y = message.CC.Count - 1; y > x; y--)
{
if (message.CC[y].Address == message.CC[x].Address)
message.CC.RemoveAt(y);
}
for (int y = message.Bcc.Count - 1; y >= 0; y--)
{
if (message.Bcc[y].Address == message.CC[x].Address)
message.Bcc.RemoveAt(y);
}
}
for (int x = 0; x < message.Bcc.Count; x++)
{
for (int y = message.Bcc.Count - 1; y > x; y--)
{
if (message.Bcc[y].Address == message.Bcc[x].Address)
message.Bcc.RemoveAt(y);
}
}