代码之家  ›  专栏  ›  技术社区  ›  Noel

通过VPN smtpexception net_io_connection发送电子邮件已关闭

  •  0
  • Noel  · 技术社区  · 15 年前

    我正在发送一封来自wpf应用程序的电子邮件。当作为域用户在网络上发送时,电子邮件将按预期发送。但是,当我尝试通过VPN连接发送电子邮件时,会出现以下异常:

    例外:

    system.net.mail.smtpexception:发送邮件失败。--->system.io.ioexception:无法从传输连接读取数据:网络IO连接已关闭。 位于system.net.mail.smtpreplyreaderfactory.processread(byte[]buffer,int32 offset,int32 read,boolean readline) 在system.net.mail.smtpreplyreaderfactory.readlines(smtpreplyreader调用方,布尔单行) 在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(邮件消息)

    我尝试使用模拟以及在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 回复  |  直到 9 年前
        1
  •  0
  •   Noel    15 年前

    我通过将vpn计算机上的outlook连接到exchange服务器解决了这个问题。IP地址自动解析为与我尝试的服务器名称不同的服务器名称。显然,exchange服务器只能通过vpn通过另一个url访问。