phpでimap関数を使用し、コマンドラインからopensslを使用して通信することができません。これを、phpでfsockopen()を実行して試してみたかっただけです。私のコードは:
<?php
$sock=fsockopen('ssl://imap.gmail.com', '993',$errno, $errstr);
if(!$sock){
echo $errstr;
}
else{
fputs($sock,"a LOGIN user@gmail.com password\r\n");
$out=fgets($sock,2000);
fclose($sock);
echo $out;
}
?>
問題は、サーバーから$outで最初の応答だけを取得することです
* OK Gimap ready for requests from **.***.63.101 jj5if832612pbc.164
そして、fgetsのwhileループを使用してコードを変更すると、ロードが続行され、終了時に何も表示されずに終了します。
<?php
$sock=fsockopen('ssl://imap.gmail.com', '993', $errno, $errstr);
if(!$sock){
echo $errstr;
}
else{
fputs($sock,"a LOGIN user@gmail.com password\r\n");
while(!feof($sock)){
$out.=fgets($sock,2000);
}
fclose($sock);
echo $out;
}
?>
ログインクレデンシャルを入力した後、$outでサーバーの応答を確認したい。opensslを使用してコマンドラインからメールを表示できないので、問題はimapの処理ではないと思います。たぶん、ファイルストリームに関する基本的なことを見逃しているかもしれません。
ありがとう。