POP3/SMTPプロトコルを見ていて、コアは何もなく、fsockopenを使用してデータの書き込みと受信を行うだけであると考えられています。ソケットの操作を学ぶための練習です。これは RFC 2449 と、単純な外国の Web メール システムである Uebimiau のコードの一部を参照していますが、HOHO からコピーされたものではなく、完全にオリジナルです。気に入ったら集めて、好きなように修正してください、えー、でも、何日も頑張って書いたのですから、カテゴリー内のコメントは削除しないように注意してください。
また、このクラスを改善したり修正したりするために自由に使用していただければ幸いです。コードは注意深くデバッグされていません。バグを見つけた場合は、自分で修正してください。
/**
* クラス名: SocketPOPClient
* 機能: POP3 プロトコル クライアントの基本操作クラス
* 著者: heiyeluren
* 時刻: 2006-7-3
* 参照: RFC 2449、ウエビミアウ
* ライセンス: BSD ライセンス
*/
class SocketPOPClient
{
var $strMessage = '';
var $intErrorNum = 0;
var $bolDebug = false;
var $strEmail = ' ';
var $strPasswd = '';
var $strHost = '';
var $intPort = 110;
var $intConnSecond = 30;
var $intBuffSize = 8192;
var $resHandler = NULL;
var $ bolIsLogin = false;
var $strRequest = '';
var $strResponse = '';
var $arrRequest = array();
var $arrResponse = array();
//------ - -------
//基本操作
//--------------------------
//コンストラクター関数
function SocketPOP3Client ($strLoginEmail, $strLoginPasswd, $strPopHost= '', $intPort='')
{
$this->strEmail = トリム(strto lower($strLoginEmail));
$this->strPasswd = トリム($strLoginPasswd );
$this->strHost = トリム(strto lower($strPopHost));
if ($this->strEmail=='' || $this->strPasswd=='')
{
$ this->setMessage('メール アドレスまたはパスワードが空です', 1001);
return false;
}
if (!preg_match("/^[w-] (.[w-] )*@[w-] (.[w-] ) $/i ", $this->strEmail))
{
$this->setMessage('メール アドレスが無効です', 1002);
return false;
}
if ($this ->strHost=='')
{
$this->strHost = substr(strrchr($this->strEmail, "@"), 1);
}
if ($intPort!='')
{
$this->intPort = $intPort;
}
$this->connectHost();
}
//サーバーに接続
function connectHost()
{
if ($this-> bolDebug)
{
echo "接続 ".$this ->strHost." ...rn";
}
if (!$this->getIsConnect())