首页 > 解决方案 > 使用 PHP fsockopen() 建立 IMAP 连接

问题描述

目标:构建一个类以连接到IMAP服务器并发送commands

这是我所做的:

  1. connection接受host,port和一个可选的timeout作为参数。
  2. 定义了一个__constructor()函数来使用fsockopen().
  3. 定义了一个command()函数来向成功连接的IMAP服务器发出命令。

功能没有问题__constructor()。但主要问题在于command()功能。发出登录命令后,我无法echo从服务器获得任何命令。

整个过程可能对建立 IMAP 连接没有用,但我需要学习。所以,请帮助我,并提前感谢。

以下是PHP代码


class connection {
  public $pointer;
  function __construct(...$args){
    if (count($args) < 2){
      echo "\033[01;31m Error: Insufficient number of arguments given \033[0m";
      return;
    }
    elseif (count($args) == 2){
      if (!(is_numeric($args[1]))){
        echo "\033[01;31m Error: Invalid 2nd argument \033[0m";
        die();
      }
      elseif (!(is_string($args[0]))){
        echo "\033[01;31m Error: Invalid 1st argument \033[0m";
        die();
      }
      else{
        $fp = @fsockopen($args[0],$args[1]);
        if (!($fp)){
          echo "\033[01;31m Failed: Cannot connect to the host ".$args[0]." via port ".$args[1]."\033[0m";
          die();
        }
        else{
          echo "Success: Connection established to the host ".$args[0]." via port ".$args[1];
          $this->pointer = $fp;
          return $fp;
        }
      }
    }
    elseif (count($args) == 3){
      if (!(is_numeric($args[1]))){
        echo "\033[01;31m Error: Invalid 2nd argument given to function: __construct() of connection() \033[0m";
        die();
      }
      elseif (!(is_string($args[0]))){
        echo "\033[01;31m Error: Invalid 1st argument given to function: __construct() of connection() \033[0m";
        die();
      }
      elseif (!(is_numeric($args[2]))){
        echo "\033[01;31m Error: Invalid 3rd argument given to function: __construct() of connection() \033[0m";
        die();
      }
      else{
        $fp = @fsockopen($args[0],$args[1],$args[2]);
        if (!($fp)){
          echo "\033[01;31m Failed: Cannot connect to the host ".$args[0]." via port ".$args[1]."\033[0m";
          die();
        }
        else{
          echo "Success: Connection established to the host ".$args[0]." via port ".$args[1]."\n";
          $this->pointer = $fp;
          return $fp;
        }
      }
    }
  }
  function command($string){
    if (!(is_string($string))){
      echo "\033[01;31m Error: Invalid argument given to function: command()\033[0m";
      die();
    }
    else{
      $send = fputs($this->pointer,$string);
      $return = fgets($this->pointer);
      echo $return;
    }
  }
}
$point = new connection("imap.gmail.com",993,30);
$point->command("a00001 login ****** ********");

?>




标签: phpnetworking

解决方案


推荐阅读