发送邮件时 MailKit SMTP 变慢
MailKit SMTP slow when sending messages
我一直在使用 MailKit 通过 IMAP 检索一些电子邮件并使用 SMTP () 转发它们,但是 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);
而且耗时一般在30s以上。让我怀疑有问题的是电子邮件实际上几乎是立即转发的:比代码到达 smtpClient.Send
方法几秒钟(甚至更少),我可以看到消息出现在目标电子邮件帐户中(我同时打开了 Thunderbird),但有些东西使代码仍在 Send
代码行中执行某些操作。
有没有办法知道代码在做什么以及为什么要花这么长时间?
您可以在此处查看 SmtpClient.Send() 代码的作用:SmtpClient.cs:1543
如果您在调用 client.Send() 后几秒内看到消息显示在目的地,我想不出任何发送时间会超过 30 秒的原因。
我唯一的猜测是服务器需要很长时间才能发送对 DATA(或 BDAT)命令(实际发送原始消息数据的命令)的响应。
换句话说,我的猜测是它必须是这一行:SmtpClient.cs:1517 or this line: SmtpClient.cs:1488
这是 ReadResponse() 方法:SmtpClient.cs:320。等待很可能发生在 Poll() 调用中,或者,如果流不支持轮询 (SslStream),则它将卡在 stream.Read() 调用中等待服务器的响应。
我一直在使用 MailKit 通过 IMAP 检索一些电子邮件并使用 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);
而且耗时一般在30s以上。让我怀疑有问题的是电子邮件实际上几乎是立即转发的:比代码到达 smtpClient.Send
方法几秒钟(甚至更少),我可以看到消息出现在目标电子邮件帐户中(我同时打开了 Thunderbird),但有些东西使代码仍在 Send
代码行中执行某些操作。
有没有办法知道代码在做什么以及为什么要花这么长时间?
您可以在此处查看 SmtpClient.Send() 代码的作用:SmtpClient.cs:1543
如果您在调用 client.Send() 后几秒内看到消息显示在目的地,我想不出任何发送时间会超过 30 秒的原因。
我唯一的猜测是服务器需要很长时间才能发送对 DATA(或 BDAT)命令(实际发送原始消息数据的命令)的响应。
换句话说,我的猜测是它必须是这一行:SmtpClient.cs:1517 or this line: SmtpClient.cs:1488
这是 ReadResponse() 方法:SmtpClient.cs:320。等待很可能发生在 Poll() 调用中,或者,如果流不支持轮询 (SslStream),则它将卡在 stream.Read() 调用中等待服务器的响应。