使用 gmail smtp 通过代理发送电子邮件

Posted

技术标签:

【中文标题】使用 gmail smtp 通过代理发送电子邮件【英文标题】:Sending email through proxy using 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'

从哪里/如何开始调试?

【问题讨论】:

可能是您正在寻找的答案,请访问***.com/questions/19446001/… 【参考方案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 服务器。

【讨论】:

以上是关于使用 gmail smtp 通过代理发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

为什么设计不通过gmail smtp发送电子邮件?

无法通过 gmail 从新创建的电子邮件中使用 phpMailer 发送 SMTP 邮件 [重复]

通过 GoDaddy 上的 gmail SMTP 发送电子邮件 [关闭]

通过 Gmail SMTP 发送电子邮件时出错

我无法使用 gmail SMTP 通过 swift 邮件发送邮件

golang 使用Go(Golang)通过GMail发送电子邮件与net / smtp