【发布时间】:2020-12-29 16:53:11
【问题描述】:
我们的应用程序可以通过 SmtpClient 发送电子邮件。我们的一位客户试图通过使用他的 gmail 帐户来执行此操作,但失败导致超时。但是,在我们的测试实验室中,它可以正常工作(使用另一个 gmail 帐户)。
在跟踪中,我可以看到服务器没有用证书、服务器密钥交换、服务器问候完成来回答。我想知道这可能是什么原因?
我还在跟踪中注意到,客户使用的是 TLSv1,所以我尝试在 Windows7 系统上复制该错误,但它仍然对我有效。
oSmtp = new SmtpClient(this.host, this.port);
oSmtp.DeliveryMethod = SmtpDeliveryMethod.Network;
oSmtp.EnableSsl = ssl;
NetworkCredential oCredential = new NetworkCredential(this.userName, this.password);
oSmtp.Credentials = oCredential;
oSmtp.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
string userState = null;
oSmtp.SendAsync(oMsg, userState);
就代码而言,enableSsl 为 true,端口为 587,我们还指示我们的客户检查他的 gmail 帐户并允许安全性较低的应用程序。
我们会询问客户更具体的细节,并尝试在我们的应用程序中添加更多的痕迹,但我想知道是否有任何东西可以阻止服务器使用证书来回答,...
检查痕迹显示客户 Client Hello 和我们的测试 Client Hello 之间没有显着差异。
谢谢!
【问题讨论】:
-
请编辑您的问题并包含实际代码和堆栈跟踪而不是图像。询问用户是否启用了 2fa?
-
我会问一下 2fa。我会尝试在我们的实验室进行测试,看看我们是否得到类似的结果
-
刚在实验室做了个测试,gmail账号是2fa,连Server Hello部分都进不去。
-
为了在帐户上使用启用了 2fa 的 SMTP 服务器,您需要创建一个 app password 并使用它而不是密码本身。 SMTP 服务器无法处理 2fa 调用。
-
我不打算在启用 2fa 的情况下使用 smtp。我刚刚对当前应用程序进行了测试,看看如果帐户有 2fa,它与服务器的通信能走多远。对比结果,客户端没有开启2fa。