【问题标题】:Sending email through proxy using gmail smtp使用 gmail smtp 通过代理发送电子邮件
【发布时间】:2011-02-08 05:32:47
【问题描述】:

尝试在我的 C# 应用程序中发送一些电子邮件。我在代理后面——这无疑是代码不起作用的原因。这是我目前所拥有的:

App.Config

<system.net>
    <defaultProxy enabled="false">
      <proxy proxyaddress="xxx.xxx.xxx.xxx"/>
    </defaultProxy>
    <mailSettings>
      <smtp deliveryMethod="Network">
        <network host="smtp.gmail.com" port="587"/>
      </smtp>
    </mailSettings>
  </system.net>

代码

        var username = "...";
        var password = "...";

        var fromEmail = "...";
        var toEmail = "...";
        var body = "Test email body";
        var subject = "Test Subject Email";

        var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential(username, password),
            EnableSsl = true
        };

        try
        {
            client.Send(fromEmail, toEmail, subject, body);
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }  

每次我得到 System.Net.WebException:无法解析远程名称:'smtp.gmail.com'

从哪里/如何开始调试?

【问题讨论】:

标签: c# proxy gmail send smtpclient


【解决方案1】:

要调试任何涉及客户端服务器的东西,telnet 是您的朋友。

尝试进入 DOS 并输入:

  telnet smtp.gmail.com 587

你应该看到:

  220 mx.google.com ESMTP 20sm950596pzk.3

如果你不这样做(你得到一个“无法连接”或类似的东西),你肯定被阻止了。

如果您没有安装 telnet,您可以从“Windows 组件”下的添加/删除程序中安装它。

【讨论】:

    【解决方案2】:

    您是正确的,在代理后面会阻止您的代码工作。解决方案并不是那么简单。我知道没有标准的“SMTP 代理”(HTTP 代理的方式)。您必须使用 SOCKS 代理并为其找到一些 .NET 客户端 - .NET 框架中没有,但如果您在 Google 上搜索“.NET SOCKS 代理”,您应该能够找到。

    不过,您的网络不太可能运行 SOCKS 代理,因此您可能不得不放弃这一点,而只使用本地 SMTP 服务器。

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 2018-01-09
      • 2017-05-12
      • 2016-01-16
      • 2011-08-11
      • 2012-05-29
      • 2020-02-21
      • 1970-01-01
      • 2020-05-30
      相关资源
      最近更新 更多