通过VPN发送电子邮件SmtpException net_io_connectionclosed

时间:2010-04-15 19:30:29

标签: c# .net smtp smtpclient

我正在从WPF应用程序发送电子邮件。在网络上以域用户身份发送时,电子邮件会按预期发送。但是,当我尝试通过VPN连接发送电子邮件时,我得到以下异常:

例外:

  

System.Net.Mail.SmtpException:发送邮件失败。 ---> System.IO.IOException:无法从传输连接读取数据:net_io_connectionclosed。      at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte [] buffer,Int32 offset,Int32 read,Boolean readLine)      在System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader调用者,布尔值oneLine)      在System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader调用者)      在System.Net.Mail.SmtpConnection.GetConnection(字符串主机,Int32端口)      在System.Net.Mail.SmtpTransport.GetConnection(字符串主机,Int32端口)      在System.Net.Mail.SmtpClient.GetConnection()      在System.Net.Mail.SmtpClient.Send(MailMessage消息)

我尝试过使用模拟以及在SmtpClient上设置凭据。似乎都不起作用:

using (new ImpersonateUser("myUser", "MYDOMAIN", "myPass"))
               {
                   var client = new SmtpClient("myhost.com");
                   client.UseDefaultCredentials = true;
                   client.Credentials = new NetworkCredential("myUser", "myPass", "MYDOMAIN");
                   client.Send(mailMessage);
               }

我也尝试使用Wireshark通过网络查看邮件,但我不太了解SMTP以了解我正在寻找的内容。

另一个变量是我在VPN上使用的机器是Vista Business,而网络上的机器是Win7。我不认为这是相关的,但我不会问我是否知道这个问题! :)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我通过将VPN机器上的Outlook连接到Exchange服务器来解决这个问题。 IP地址自动解析为与我尝试的服务器名称不同的服务器名称。显然,交换服务器只能通过其他URL通过VPN获得。