C# Mailkit.Net挂起在smtpClient.ConnectAsync()上,在任务超时之前不会引发异常

C# Mailkit.Net挂起在smtpClient.ConnectAsync()上,在任务超时之前不会引发异常,c#,asp.net-core,.net-core,mailkit,C#,Asp.net Core,.net Core,Mailkit,最近,我在一个较旧的应用程序中遇到了一个问题。突然,应用程序停止向其用户发送注册/重置密码电子邮件。经过一些调试,我发现原因是Mailkit SmtpClient类的奇怪行为。以下代码中出现问题: public async Task Execute(EmailMessage email) { var mimeMessage = CreateMimeMessageFromEmailMessage(email); using var smtpClient = new SmtpCli

最近,我在一个较旧的应用程序中遇到了一个问题。突然,应用程序停止向其用户发送注册/重置密码电子邮件。经过一些调试,我发现原因是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);
}
在ConnectAsync()方法中,每次都会发生错误,howewer,它不会抛出异常,只是在这个方法中冻结一段时间(大约一分钟),然后它只抛出任务取消,没有特定于mailkit的内容

起初,我认为服务器地址、端口或安全选项可能是错误的,但我们在其他一些应用程序中使用相同的设置(和相同的代码!),它们似乎工作正常。这也不应该是由我的PC/网络配置中的某些内容引起的,因为其他开发人员在使用此程序时也会遇到相同的错误。我还尝试使用不同的电子邮件选项,但错误仍然存在


您知道如何找到此错误的原因,以及在没有引发异常时如何调试问题吗?

根据您的评论,当使用的端口为465时,以下行失败:

await smtpClient.ConnectAsync(Options.SmtpServer, Options.Port, MailKit.Security.SecureSocketOptions.None);
那是你的问题。您正在尝试使用端口465,同时还使用了
SecureSocketOptions.None

您需要对端口465使用
SecureSocketOptions.SslOnConnect


端口465是SSL端口,但您告诉MailKit连接并将其视为连接到纯文本端口。显然,这是行不通的。

您是否检查了是否能够建立到SMTP服务器的连接?在那个端口试试telnet。@RamKumaran我有点困惑。我试图测试我在应用程序中使用的同一端口(根据我们电子邮件提供商的smtp设置文档,端口465),但它确实没有连接。Hovewer,我在他们的网站上发现,对于telnet测试,我应该使用端口25(并且它已连接)。我非常困惑您最初所做的是正确的,端口未打开,或者您无法建立成功的连接。检查此链接:即使端口已打开,也有东西阻止您成功连接,请检查防火墙。