我通过复制这篇知识库文章中的代码编写了一个示例程序,并在用户信息方面稍作编辑。它使用已弃用的 .NET 库 System.Web.Mail 来执行此操作,因为新的 System.Net.Mail 不支持隐式 SSL。我在端口 465 上使用 Google smtp 服务器对其进行了测试,这是他们的隐式电子邮件端口,一切正常。然而,当我把它交给客户在他的网络上测试它时,没有任何东西被发送/接收,这是错误:
2013-03-07 15:33:43 - The transport failed to connect to the server.
2013-03-07 15:33:43 - at System.Web.Mail.SmtpMail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args)
2013-03-07 15:33:43 - at System.Web.Mail.SmtpMail.CdoSysHelper.Send(MailMessage message)
2013-03-07 15:33:43 - at System.Web.Mail.SmtpMail.Send(MailMessage message)
在电子邮件 SSL 方面,我不是很精通,所以这是我对根本原因的可能理论:
假设他正在使用正确的 smtp 服务器和正确的端口(SSL 端口),我想知道是否有以下任何原因可能是原因:
他们在邮件服务器上使用 SSL,但他没有在运行我的程序的机器上安装证书,即使他在同一个域中并且使用相同的电子邮件域作为发件人。
他们正在使用 SSL,但他们可能使用 NTLM 或匿名身份验证,而我的程序使用基本身份验证。
对不起,如果我提供的信息很少,因为我自己在这个领域很陌生,所以我还在研究更多。
你知道我可以做些什么来确保我的小测试程序可以使用隐式 SSL 电子邮件服务器的 smtp 服务器发送吗?
编辑:我确实在我的代码中添加了以下行以表明我正在使用 SSL。
oMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");