SmtpClinet(SmarterEmail服务器)通过SMTP发送电子邮件失败

4

我已经配置并运行了SmarterEmail服务器,运行25端口的SMTP服务,并配置了电子邮件帐户。

我创建了一个简单的.NET应用程序来通过我的邮件服务器发送电子邮件,它非常简单:

        public void SendEmail(EmailMessage message, string username, string password, string host, int port, bool enableSsl)
    {
        MailMessage mm = new MailMessage(message.From, message.To, message.Subject, message.Message);
        NetworkCredential credentials = new NetworkCredential(username, password);

        SmtpClient sc = new SmtpClient(host, 25);
        sc.DeliveryMethod = SmtpDeliveryMethod.Network;
        sc.UseDefaultCredentials = false;
        sc.EnableSsl = enableSsl;
        sc.Credentials = credentials;

        sc.Send(mm);
    }

这个应用程序出现了异常:
未处理的异常:System.Net.Mail.SmtpException: 发送邮件失败。 ---> System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 连接方在一段时间后没有正确响应,或者已建立的连接失败,因为连接的主机没有正确响应173.248.182.102:25 在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddre ss socketAddress) 在 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Sock et s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception) --- 内部异常堆栈跟踪结束 --- 在 System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object ow ner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket 6, Int32 timeout) 在 System.Net.PooledStream.Activate(Object owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback) 在 System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) 在 System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncD elegate asyncCallback, Int32 creationTimeout) 在 System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint) 在 System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint) 在 System.Net.Mail.SmtpClient.GetConnection() 在 System.Net.Mail.SmtpClient.Send(MailMessage message) --- 内部异常堆栈跟踪结束 --- 在 System.Net.Mail.SmtpClient.Send(MailMessage message) 在 SendMail.MailService.SendEmail(EmailMessage message, String username, Stri ng password, String host, Int32 port, Boolean enableSsl) in D:\Development\Proje cts\Experiments\SendMail\SendMail\Program.cs:line 36 在 SendMail.Program.Main(String[] args) in D:\Development\Projects\Experiment s\SendMail\SendMail\Program.cs:line 52
邮件服务器:mail.trackyt.net,端口 = 25,SSL = false。它不能从我的(本地)机器上工作。
同时,如果我将此应用程序复制到运行SmarterEmail(远程)的机器上,则可以成功工作!
我认为它被防火墙阻止了,在远程机器上启用了25端口 - 相同的结果。 禁用防火墙,本地和远程机器 - 相同的结果。
附加诊断:
通过http://pingability.com/smtptest.jsp运行SMTP测试:

EHLO pingability.com 250-MAST-WIN2K8R2-STD 你好 [207.210.209.134] 250-SIZE 31457280 250-AUTH LOGIN CRAM-MD5 250 OK DEBUG SMTP: 找到扩展名"SIZE", arg "31457280" DEBUG SMTP: 找到扩展名"AUTH", arg "LOGIN CRAM-MD5" DEBUG SMTP: 找到扩展名"OK", arg "" DEBUG SMTP: 尝试认证 DEBUG SMTP: 检查机制: LOGIN PLAIN DIGEST-MD5 NTLM AUTH LOGIN 334 VXNlcm5hbWU6 c3VwcG9ydA== 334 UGFzc3dvcmQ6 c3VwcG9ydDEyMw== 235 认证成功

这说明SMTP是正常的。

从我的机器上使用Telnet:

Microsoft Telnet> o mail.trackyt.net 25 连接到mail.trackyt.net...无法连接主机,在端口上 25: Connect failed

从SmarterMail机器上相同的telnet则是正常的。

有什么想法吗?


你的电脑能否识别mail.trackyt.net?尝试在主机变量中使用IP地址。 - hallie
是的,在异常中可以看到,它已经成功解决了 - 173.248.182.102:25。 - Alexander Beletsky
邮件服务器正在监听哪个IP? - jgauffin
1
netstat TCP 173.248.182.102:25 SERVER1:0 LISTENING - Alexander Beletsky
1个回答

3

你是在家里工作吗?许多互联网服务提供商会阻止外发25端口。

在SmarterMail中,您可以添加另一个端口的SMTP监听器。尝试添加一个587端口,并查看是否可以连接(假设您有管理员权限)。

--戴夫


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接