gpt4 book ai didi

c# - 在带有 TLS 和 SmtpAuth 的 .Net 4/C# 中使用 System.Net.Mail.SmtpClient 发送电子邮件,在本地工作但不在生产服务器上工作(win 2008 r2)

转载 作者:行者123 更新时间:2023-11-30 18:40:41 27 4
gpt4 key购买 nike

我在我的开发机器(Win 7、VS 2010)上成功运行了这段代码

SmtpClient client = new SmtpClient("servername.domain.tld");
client.Port = 25;
client.Credentials = new NetworkCredential("username", "password");
client.EnableSsl = true;
client.Send(new MailMessage("destination@domain.tld", "sender@domain.tld", "subject", "body"));

我的 smtp 服务器是运行在启用了 TLS 和 SmtpAuth 的 debian 上的 Exim 4.7。它不支持中继,但如果用户通过身份验证,他可以向任何人发送邮件。

当我在我们的 Win 2008 R2 生产服务器上运行上面的代码时,我收到了这个错误消息:

System.Net.Mail.SmtpException: Server does not support secure connections.

当我用谷歌搜索时,我阅读了关于连接到端口 465 等的分配,但这不是传统的 SMTP over SSL aka。 SSMTP/SMTPS。您可以在此处阅读更多信息:http://www.exim.org/exim-html-current/doc/html/spec_html/ch39.html

所以我能理解的端口 25 正确的,它也可以在我的开发机器上使用端口 25、TLS 等工作。

当我用谷歌搜索这个时出现的另一件事是尝试

client.EnableSsl = false;

当我这样做时,出现以下错误:

System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: relay not permitted

这是正确的,因为如果客户端不进行身份验证,我们就不会中继邮件。

这是来自服务器的失败 session 的 smtp 服务器输出:

2011-10-21 11:23:43 [2022] SMTP connection from [source.ip]:51712 I=[smtp.ip]:25 (TCP/IP connection count = 1)2011-10-21 11:23:48 [2072] ident connection to source.ip timed out2011-10-21 11:23:48 [2072] SMTP connection from servername.domain.tld (servername) [source.ip]:51712 I=[smtp.ip]:25 lost2011-10-21 11:23:48 [2072] no MAIL in SMTP connection from servername.domain.tld (servername) [source.ip]:51712 I=[smtp.ip]:25 D=0s C=EHLO

这是来 self 的开发机器的工作 session 的 smtp 服务器输出:

2011-10-21 12:04:05 [2022] SMTP connection from [source.ip]:63294 I=[smtp.ip]:25 (TCP/IP connection count = 1)2011-10-21 12:04:10 [2077] ident connection to source.ip timed out2011-10-21 12:04:11 [2077] 1RHBxT-0000XV-7P  for to@domain.tld2011-10-21 12:04:11 [2079] cwd=/var/spool/exim4 3 args: /usr/sbin/exim4 -Mc 1RHBxT-0000XV-7P2011-10-21 12:04:12 [2079] 1RHBxT-0000XV-7P => to@domain.tld F= P= R=dnslookup T=remote_smtp S=1058 H=mx2.hotmail.com [65.55.37.104]:25 C="250   Queued mail for delivery" QT=1s DT=1s2011-10-21 12:04:12 [2079] 1RHBxT-0000XV-7P Completed QT=1s

有人知道我可以做些什么来完成这项工作吗?

谢谢你了

最佳答案

至于您的 Windows 服务器不允许出站 SSL,您将需要处理您的防火墙配置。如果您暂时禁用防火墙,该错误应该会消失。

SSL 不会改变您的身份验证方式,它只会加密连接。禁用 SSL 后,您成功与 SMTP 服务器对话,但因凭据无效而被拒绝。

至于服务器拒绝您的凭据的原因,这可能是由许多问题引起的。它可以像用户名/密码不正确一样简单,也可以像服务器只允许来自一部分机器的连接一样复杂。

关于c# - 在带有 TLS 和 SmtpAuth 的 .Net 4/C# 中使用 System.Net.Mail.SmtpClient 发送电子邮件,在本地工作但不在生产服务器上工作(win 2008 r2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7847546/

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