php - 使用 PHP fsockopen() 建立 IMAP 连接
问题描述
目标:构建一个类以连接到IMAP
服务器并发送commands
这是我所做的:
- 类
connection
接受host
,port
和一个可选的timeout
作为参数。 - 定义了一个
__constructor()
函数来使用fsockopen()
. - 定义了一个
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 ****** ********");
?>
解决方案
推荐阅读
- javascript - 具有 x-editable 的 DataTables 不发送 ajax 数据
- solr - solr 中的每个集合有多少个分片合适?
- c# - 使用 BackgroundWorker 时 WPF UI 未更新
- python - 为圆形区域执行 Python 函数
- java - 从数独网格返回解决方案数量的算法
- javascript - 具有多个内部对象的数组,将更深的内部对象提取为数组
- python - Tensorflow、Horovod 和 NVLINK NotFoundError
- cmake - 将目标属性添加到 CMake 中现有的导入库
- excel - How can I access individual element in array of sheets and avoid Run-time error 9 - Excel VBA
- ruby-on-rails - 与rails中抽象类的多态关联