【问题标题】:fsockopen timesout, cannot connect to Office 365 SMTPfsockopen 超时,无法连接到 Office 365 SMTP
【发布时间】:2018-07-08 17:54:31
【问题描述】:

我最近问了另一个问题here,但没有引起任何关注。总而言之,在我正在处理的 Drupal 8 站点上,SMTP 身份验证模块测试电子邮件发送失败并抛出错误“从 xxxx@xxxx.com 向 xxxx@xxxx.com 发送电子邮件时出错:SMTP 错误:可以不连接到 SMTP 主机。我已经把这个问题缩小了很多,在我看来,它的不同足以保证一个单独的线程。希望它足够简洁,能给我一些答案。

问题: The module 正在尝试以下 fsockopen 连接:

$this->smtp_conn = @fsockopen($host,
                              $port,
                              $errno,
                              $errstr,
                              $tval);

在文件 SMTP.php 的第 130-134 行。每个变量的值如下:

  1. $host = 'smtp.office365.com'
  2. $port = '587'(也试过 25)
  3. $tval = 10

错误值返回如下:

  1. $errorno = 20
  2. $errstr = '连接超时'

对于 SMTP 连接来说,这似乎是一个非常基本的步骤,但我不确定它为什么会失败。显然这是一个非常模糊的错误,但是我还需要在服务器上设置什么才能使其正常工作吗?也许添加一个DNS记录?谁能想到任何超时的原因?

【问题讨论】:

  • 为我工作。你从哪里连接?可能是您的网络有出站连接限制,或者您连接的主机被严重列入黑名单。
  • @Sammitch 我在办公室的 Mac 上。有什么方法可以检查其中任何一个吗?我对这玩意有点陌生,请问可以用telnet来测试一下吗?
  • telnet smtp.office365.com 587,成功为220 CO2PR06CA0054.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 29 Jan 2018 23:00:40 +0000,失败为连接超时。不过,您最好询问您的 IT 人员是否阻止或过滤 SMTP。

标签: php outlook smtp fsockopen


【解决方案1】:

这个答案的两个部分:

感谢 cmets 中 @Sammitch 的帮助,我能够确定问题是我正在使用的网络服务器的问题,而不是 Outlook 服务器的问题。我与托管此站点的共享服务器的支持人员进行了交谈,他们说'默认情况下,出于安全原因,不允许与外部服务器的传出 SMTP 连接。我们现在允许您帐户的传出 SMTP 连接。一旦他们允许这样做,这个直接的问题就得到了解决。

然后又出现了一个问题。发送测试电子邮件时,我收到以下错误:“客户端无权作为此发件人发送”。这是由于未将“来自地址的电子邮件”设置为用户名电子邮件造成的。设置为该值后,电子邮件已成功发送。我知道这与这个特定问题并不完全相关,但它可能会帮助将来遇到这个问题的人。

【讨论】:

    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 2010-11-26
    • 2017-03-08
    • 2012-02-03
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多