邮件发送时,MailKit SMTP速度很慢

时间:2015-04-07 17:39:08

标签: c# smtp mailkit

我一直在使用MailKit使用IMAP检索一些电子邮件并使用SMTP(more info here)转发它们,但SMTP发送电子邮件需要很长时间。

我通过NuGet使用mailkit

这是我使用

的代码
<!-- language: c# -->

var before = DateTime.Now;
Console.Write("\tForwarding email... ");

smtpClient.Send(forwardMessage, fromMailboxAddress, new[] { toMailboxAddress });

Console.WriteLine(" done! ({0})", DateTime.Now - before);

花费的时间通常超过30秒。让我怀疑的是,有些错误的是,电子邮件实际上几乎是立即转发的:比代码到达smtpClient.Send方法几秒钟(甚至更短),我可以看到消息出现在目的地电子邮件帐户(我同时打开了Thunderbird),但有些东西使代码仍然在Send代码行中执行某些操作。

有没有办法知道代码在做什么以及为什么需要这么长时间?

1 个答案:

答案 0 :(得分:1)

您可以在此处查看SmtpClient.Send()代码的作用:SmtpClient.cs:1543

如果您在调用client.Send()后几秒钟内看到消息显示在目的地,我想不出任何理由需要超过30秒才能发送。

我唯一的猜测是服务器需要很长时间才能发送对DATA(或BDAT)命令的响应(这是实际发送原始消息数据的命令)。

换句话说,我的猜测是它必须是这一行:SmtpClient.cs:1517或此行:SmtpClient.cs:1488

这是ReadResponse()方法:SmtpClient.cs:320。很可能等待将在Poll()调用中,或者,如果流不支持轮询(SslStream),则它将停留在stream.Read()调用中,等待来自服务器的响应。