我在我的开发机器上成功运行此代码(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服务器是在debian上运行的Exim 4.7,启用了TLS和SmtpAuth。它不支持中继,但如果用户进行身份验证,他可以向任何人发送邮件。
当我在Win 2008 R2生产服务器上运行上面的代码时,我收到以下错误消息:
System.Net.Mail.SmtpException:服务器不支持安全连接。
当我谷歌这个时,我读了关于连接到端口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:邮箱不可用。服务器响应是:不允许中继
这是正确的,因为如果客户端未进行身份验证,我们不会中继邮件。
以下是来自服务器的失败会话的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 out 2011-10-21 11:23:48 [2072] SMTP connection from servername.domain.tld (servername) [source.ip]:51712 I=[smtp.ip]:25 lost 2011-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
这是来自我的开发机器的工作会话的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 out 2011-10-21 12:04:11 [2077] 1RHBxT-0000XV-7P for to@domain.tld 2011-10-21 12:04:11 [2079] cwd=/var/spool/exim4 3 args: /usr/sbin/exim4 -Mc 1RHBxT-0000XV-7P 2011-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=1s 2011-10-21 12:04:12 [2079] 1RHBxT-0000XV-7P Completed QT=1s
任何人都对我能做些什么来深入了解这项工作?
谢谢,goddang
答案 0 :(得分:0)
如果您的Windows服务器不允许出站SSL,则需要处理防火墙配置。如果暂时禁用防火墙,该错误应该消失。
SSL不会改变您的身份验证方式,它只会加密连接。禁用SSL后,您已成功与SMTP服务器通信,但您因无效凭据而被拒绝。
至于服务器拒绝您的凭据的原因,这可能是由任意数量的问题引起的。它可能很简单,因为用户名/密码不正确或复杂,因为服务器只允许来自机器子集的连接。