【问题标题】:how to check smtp server is working or not using php如何使用 php 检查 smtp 服务器是否正常工作
【发布时间】:2013-04-16 15:56:52
【问题描述】:

我想使用 php 检查我的网站 smtp 是否关闭。我尝试使用 fsockopen 连接到服务器上的 25 端口,然后在 smtp 服务运行时返回 true。使用 php 脚本测试 smtp 或 ftp 运行的最佳方法是哪个。

【问题讨论】:

    标签: php ftp smtp


    【解决方案1】:

    我会使用 PHP 邮件功能:

    http://php.net/manual/en/function.mail.php

    将电子邮件实际发送到另一个稳定的帐户(可能是 gmail?)。该脚本必须监视此帐户并验证是否收到了预期的消息。供参考阅读:

    accessing my gmail inbox via php code

    【讨论】:

    • 我想检查服务器上运行的 ftp 和其他服务,所以这是最好的方法。
    • 我会使用相同的方法,并以实际的方式实际测试服务器的每个组件,然后寻找成功的结果。 PHP 有许多 ftp 函数。 php.net/manual/en/book.ftp.php
    【解决方案2】:

    对于 smtp,可以这样使用stream_socket_client()

    <?php
    $timeout = 30; // your own timeout value
    $connection_type = 'tcp'; // may be ssl, sslv2, sslv3 or tls
    $host = 'myserver';
    $port = 25;
    
    $fp = stream_socket_client("{$connection_type}://{$host}:{$port}", $errno, $errstr, $timeout);
    
    if (!$fp) {
        echo "$errstr ($errno)";
    }
    

    但是对于 FTP,我不确定。

    这肯定不是最好的解决方案,但如果有帮助的话......

    【讨论】:

      【解决方案3】:

      您说的是 smtp 服务器,因此您必须启用 pear 框架。我有一个链接 http://www.authsmtp.com/php-pear-mail/ 可以提供帮助。 或者你可以这样做:

      $f = fsockopen('smtp host', 25) ;
      if ($f !== false) {
          $res = fread($f, 1024) ;
          if (strlen($res) > 0 && strpos($res, '220') === 0) {
              echo "Success!" ;
          }
          else {
              echo "Error: " . $res ;
          }
      }
      fclose($f) ; 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-03
        • 1970-01-01
        • 2016-08-26
        • 2021-06-08
        • 2013-08-10
        • 2023-03-03
        • 2015-07-25
        • 1970-01-01
        相关资源
        最近更新 更多