【问题标题】:Sending email through a Google Apps account is working locally, but not on my web server通过 Google Apps 帐户发送电子邮件可以在本地工作,但不能在我的网络服务器上工作
【发布时间】:2010-11-05 13:29:22
【问题描述】:

相关:

Send Email via C# through Google Apps account

我的问题是一样的,所以我实现了Koistya's solution,如下所示。令人心碎的是,它在我的开发笔记本电脑上运行良好,但是当移植到 Web 服务器时,它会超时,没有任何解释。

我的 SMTP 配置在我的 web.config 文件中。我根据 Koistya 的回答制作了模组:

<mailSettings>
    **Changed**
      <smtp from="my@email.com">
        <network host="smtp.gmail.com" password="[password]" port="587" 
          userName="my@email.com"/>
      </smtp>
    **Original**
      <!--<smtp from="my@email.com">
        <network host="mail.domain.com" password="[password]" port="25"
          userName="my@email.com"/>
      </smtp>-->
</mailSettings>

我的 .Net C# 代码(删除前后):

  SmtpClient mSmtpClient = new SmtpClient();
  mSmtpClient.EnableSsl = true;
  mSmtpClient.Send(message);

正如我所说,这在我的开发环境中非常有用,但在网络上却不行。任何人都可以帮忙吗?谢谢。

【问题讨论】:

  • 能否请您添加上一个问题的链接?
  • 已编辑以包含指向上一个问题和答案的链接

标签: c# .net email google-apps


【解决方案1】:

您的设置是正确的。我们一直使用 gmail 在我们的网络应用程序中发送邮件。您的服务器可能阻止了端口 587 上的传出流量。我会联系您的主机,看看他们是否可以提供帮助,否则您将需要新邮件或新主机。

【讨论】:

    【解决方案2】:

    感谢本网站以及 Google 应用程序论坛上的每个人的帮助(尽管我更喜欢这个),我终于把所有的拼图拼凑在一起。无论出于何种原因,端口 465 和端口 587 都不起作用。这对我有用:

    Web.config:

      <smtp from="pwretrieve@mydomain.com">
        <network host="smtp.gmail.com" password="[password]" port="25" 
          userName="pwretrieve@mydomain.com"/>
      </smtp>
    

    来自 aspx.cs 文件:

    SmtpClient mSmtpClient = new SmtpClient();
    mSmtpClient.EnableSsl = true;
    

    再次感谢!

    【讨论】:

      【解决方案3】:

      我的表单也遇到了同样的问题。我的网站在 Plesk 控制面板上运行。我所做的只是登录我的面板并禁用我的网络服务器上的电子邮件托管。之后,我的表单开始发送到 Google 应用帐户。试试我做的,我相信你会有所作为。

      【讨论】:

        【解决方案4】:

        您的托管公司没有响应,如果您有另一台服务器可以发送测试请求,请尝试请求连接到其他端口,看看会发生什么。

        【讨论】:

          【解决方案5】:

          可能是 smtp 客户端无法访问 smtp 服务器(可能被 Web 主机禁用)。

          询问网络主机是否有您应该用来发送电子邮件的特定 smtp 服务器。

          【讨论】:

          • 我很欣赏这个建议,但我自己几乎不理解这个问题。如果我们域的电子邮件全部发送给 Google,我们的虚拟主机的 smtp 服务器将扮演什么角色?在我看来,它不再涉及。 Kioysta 的解决方案是指向 smtp.gmail.com。 ???
          • 我应该补充一点,在我们切换到 Google 应用程序之前,c# 生成的电子邮件工作正常。
          • 我刚刚阅读了 Josh Kelley 对类似问题的回答,并意识到关于这个问题的内容太多了,以至于我一无所知。他说“MX 记录只影响接收邮件。您可以设置 sendmail 主机来发送邮件,而不会对您的 MX 记录或接收邮件产生任何影响。”当我将公司的电子邮件切换到 Google 应用程序时,我完全按照他们的指示进行操作。这是我知道的全部。我不知道如何在 DNS 中做任何其他事情,也不知道如何设置 SMTP 服务器。如果有人想帮我解决这个问题,我会准确地向您展示我们的 DNS 设置中的内容
          【解决方案6】:

          如果您的虚拟主机不允许您从他们的服务器发送传出 SMTP 邮件,则会导致此问题。例如,GoDaddy 只允许您通过 smtpout.secureserver.net 从您的服务器发送外发邮件,因此任何通过另一台主机(在本例中为 smtp.gmail.com)发送邮件的尝试都会失败。如果您的 ISP 不阻止传出 SMTP(例如,Qwest 不阻止),那么这就是本地工作的原因。

          与您的虚拟主机一起查看常见问题解答,了解他们对此有何看法。大多数托管公司确实允许传出 SMTP,但将其限制为每天一定数量的中继,以防止意外利用垃圾邮件转发。

          您的域中的 MX 记录仅影响传入邮件是正确的。当有人试图向 you@yourdomain.com 发送邮件时,他们会将其交给 SMTP 服务器(很可能是他们的 ISP 提供给他们的服务器),然后 SMTP 服务器会查找您的 MX 记录以查看谁处理了您的电子邮件。它将解析为 smtp.gmail.com,因此谁会收到您的邮件,而您会从他们那里获得邮件。当您发送外发邮件时,它可以通过任何人,因为您只关心目标域的 MX 记录(邮件最终将在此结束)。

          这有意义吗?如果您想澄清一下,我可以找到一些教程和其他解释来帮助理解它。

          【讨论】:

            猜你喜欢
            • 2010-11-17
            • 2017-03-13
            • 1970-01-01
            • 2019-09-20
            • 2016-08-25
            • 2018-07-11
            • 2010-10-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多