最近,我在我们的一个旧应用程序中遇到了问题。突然,应用程序停止向其用户发送注册/重置密码电子邮件。经过一些调试,我发现原因是 Mailkit SmtpClient 类的奇怪行为。问题出现在以下代码中:
public async Task Execute(EmailMessage email)
{
var mimeMessage = CreateMimeMessageFromEmailMessage(email);
using var smtpClient = new SmtpClient();
await smtpClient.ConnectAsync(Options.SmtpServer, Options.Port, MailKit.Security.SecureSocketOptions.None);
await smtpClient.AuthenticateAsync(Options.Username, Options.Password);
await smtpClient.SendAsync(mimeMessage);
await smtpClient.DisconnectAsync(true);
}
Run Code Online (Sandbox Code Playgroud)
每次在 ConnectAsync() 方法中都会发生错误,但是,它不会抛出任何异常,只是在该方法中冻结一段时间(大约一分钟),然后它只是抛出任务已取消,没有任何 mailkit 特定的信息。
起初,我认为服务器地址、端口或安全选项可能是错误的,但我们在其他一些应用程序中使用相同的设置(和相同的代码!),并且它们似乎工作正常。它也不应该是由我的电脑/网络配置中的某些内容引起的,因为其他开发人员在处理此程序时也会遇到相同的错误。我还尝试对不同的电子邮件使用选项,但错误仍然存在。
知道如何找到此错误的原因,如何在没有抛出异常时调试问题等吗?