gpt4 book ai didi

c# - 通过带有自签名 SSL 证书的邮件服务器从 .net 应用程序发送电子邮件

转载 作者:行者123 更新时间:2023-11-30 12:36:34 24 4
gpt4 key购买 nike

我安装了 hmailserver 5.3.2 并进行了配置。它接收和发送正常发送电子邮件,但我想用它从 .net/C# 发送电子邮件位于另一台服务器上的应用程序,为此我想使用SSL 通信。之前,应用程序被配置为发送通过 gmail 在端口 587 上发送电子邮件,它工作正常,但现在我们想使用我们自己的邮件服务器。我们首先将应用程序配置为连接smtp.domain.com 在端口 25 上运行,它会发送电子邮件。

然后我们创建了一个自签名证书来测试我们是否可以发送通过安全通道发送消息。我创建了证书openSSL 设置通用名称为:mail.domain.com, smtp.domain.com,*.domain.com,domain.com。我在防火墙上打开了端口 587 并且将 hmailserver 配置为使用证书进行入站连接那个港口。我创建的证书都没有用(我尝试了一个然后创建了另一个等等),在应用:

System.Exception: _COMPlusExceptionCode = -532459699

当然我也尝试通过telnet连接:telnet smtp.domain.com587,我刚得到一个黑屏。这不是防火墙问题,因为当我在端口 587 上禁用 ssl 时,我可以正常连接。使用时查看日志甚至没有显示尝试连接587 和 SSL。

我已经检查了这些问题:Getting SmtpClient to work with a self signed SSL certificateUsing a self-signed certificate with .NET’s HttpWebRequest/Response ,但它并没有解决我的问题。 ServerCertificateValidationCallback 的方法没有任何影响。

我尝试使用端口 25(也在上述问题之一中提出)、465、587,并且所有 3 个都发生相同的情况:初始握手(SYN/SYN-ACK/ACK)和大约 80 秒后连接已关闭(FIN),两者之间没有任何关系。

我是否必须将该证书安装在某处以便 .net 应用程序将其视为受信任的?我的意思是,我已经将它安装为受信任的根证书颁发机构并且可以通过运行 mmc 进行检查,所以我不知道现在该去哪里......

感谢您的帮助!

PS:不确定这是否属于 ServerFault,因为它涉及 C# 应用程序以及邮件服务器...

编辑:代码示例:

ServicePointManager.ServerCertificateValidationCallback = 
(sender, certificate, chain, sslPolicyErrors) => true;

SmtpClient mailClient = new SmtpClient("smtp.domain.com");
mailClient.Credentials = new NetworkCredential("username@domain.com", "pwd");
mailClient.Port = 587;
mailClient.EnableSsl = true;
MailMessage mailMessage = new MailMessage("mailAddressFrom", "mailAddressTo", "subject", "body");
mailMessage.IsBodyHtml = true;
mailClient.Send(mailMessage);

编辑 2:日志(根据 Ramunas 的建议):

"TCPIP" 3588    "2010-06-23 10:02:49.685"   "TCPConnection - Posting AcceptEx on 0.0.0.0:465"
"DEBUG" 3588 "2010-06-23 10:02:49.809" "Creating session 24039"
"TCPIP" 772 "2010-06-23 10:04:29.639" "TCPConnection - SSL handshake with client failed. Error code: 2, Message: End of file, Remote IP: X"
"DEBUG" 772 "2010-06-23 10:04:29.639" "Ending session 24039"

最佳答案

目前,无论 hMailServer 使用的证书是购买的还是自签名的,您都不能使用 c# 4/.NET 4 将邮件发送到 hMailServer。

问题是两部分 AFAIK ... c# 4/.NET 4 将仅使用 TLS 和端口 587 发送; hMailServer 当前不支持 STARTTLS。 c# 4/.NET 4 不支持 465/SSL 的替代。

查看此线程 "configuring SSL confusion ..."在 hMailServer 的论坛上。

"SmtpClient.EnableSsl Property " :
“另一种连接方法是在发送任何协议(protocol)命令之前先建立 SSL session 。这种连接方法有时称为 SMTP/SSL、SMTP over SSL 或 SMTPS,默认情况下使用端口 465。这种使用 SSL 的替代连接方法目前不支持。” -- MSDN

关于c# - 通过带有自签名 SSL 证书的邮件服务器从 .net 应用程序发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3096081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com