<?php
session_start
();
if(
phpversion()<"4.1.0"){
    
$_GET    $HTTP_GET_VARS;
    
$_POST    $HTTP_POST_VARS;
    
$_SESSION    $HTTP_SESSION_VARS;
}
?>
<html><head><title>メールチェッカー</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<?php
/*
****
  簡易メールチェッカー by ToR 2002/09/06
                      http://php.s3.to

  ・POPのホスト名とユーザー、パスワードを入力してください
  ・APOPには対応してません。たぶん、きっと
  ・ログイン情報はセッションで保存します。
  ・未読メールの一覧が表示されるので見たいメールをクリック!
  ・削除はしません。あとでメーラーで再受信してください。
  ・mb_関数を使ってます。メールはJISなので・・
  ・ソースがやや化けてます メールチェッカー メッセージ
*/

//メールサーバ設定のデフォルト値
$pop_host "localhost";
$pop_user "usert";
$pop_pass "pass";


//改行は<br>
$nl "<br>";
//ログインされたらセッションにホスト、ID、パス登録
if ($_POST['host'] && $_POST['user'] && $_POST['pass']) {
  
$_SESSION['host'] = $_POST['host'];
  
$_SESSION['user'] = $_POST['user'];
  
$_SESSION['pass'] = $_POST['pass'];
}
//セッションが無い時はログイン画面
if (!isset($_SESSION['host'])) {
  echo <<<EOD
◇メールチェッカー<br>
<form action="pop.php" method=POST>
POPサーバー<BR><INPUT name="host" type="text" value="
$pop_host" istyle=3 size="20"><BR>
アカウント<BR><INPUT name="user" type="text" value="
$pop_user" istyle=3 size="20"><BR>
パスワード<BR><INPUT name="pass" type="text" value="
$pop_pass" istyle=3 size="20"><BR>
<INPUT type="submit" value="送信">
</form></body></html>
EOD;
  exit;
} else {
  
$host $_SESSION['host'];
  
$user $_SESSION['user'];
  
$pass $_SESSION['pass'];
}
//コマンド送信関数
function _sendcmd($cmd) {
  global 
$sock;
  
fputs($sock$cmd."\r\n");
  
$buf fgets($sock512);
  if(
substr($buf03) == '+OK') {
    return 
$buf;
  } else {
    die(
$buf);
  }
  return 
false;
}
//POPサーバに接続
$sock fsockopen($host110$err$errno10) or die("サーバーに接続できません");
$buf fgets($sock512);
if(
substr($buf03) != '+OK') die($buf);
$buf _sendcmd("USER $user");
$buf _sendcmd("PASS $pass");

//個別表示
if ($_GET['view']) {
  
$line _sendcmd("RETR {$_GET['view']}");//RETR n -n番目のメッセージ取得(ヘッダ含)
  
$start false;//本文開始フラグ
  
while (!ereg("^\.\r\n",$line)) {//EOFの.まで読む
    
$line mb_convert_encoding($line"SJIS""auto");
    
//From抽出
    
if (ereg("^From:",$line) && !$start) {
      if (
eregi("(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)",$line,$regs)) {
        
$line $regs[1].base64_decode($regs[2]).$regs[3];
      }
      echo 
htmlspecialchars(mb_convert_encoding($line"SJIS""auto")),$nl;
    }
    
//To抽出
    
if (ereg("^To:",$line) && !$start) {
      if (
eregi("(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)",$line,$regs)) {
        
$line $regs[1].base64_decode($regs[2]).$regs[3];
      }
      echo 
htmlspecialchars(mb_convert_encoding($line"SJIS""auto")),$nl;
    }
    
//件名の次でISO-200〜なら件名2行目
    
if ($subchk && eregi("^(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)",$line,$regs)) {
      
$line $regs[1].base64_decode($regs[2]).$regs[3];
      echo 
$subject,htmlspecialchars(mb_convert_encoding($line"SJIS""auto")),$nl;
    } elseif (
$subchk) {
      echo 
$subject;
    }
    
$subchk false;
    
//件名抽出
    
if (ereg("^Subject:",$line) && !$start) {
      if (
eregi("(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)",$line,$regs)) {//MIME Bデコード
        
$line $regs[1].base64_decode($regs[2]).$regs[3];
      }
      
$subject htmlspecialchars(mb_convert_encoding($line"SJIS""auto"));
      
$subchk true;
    }
    if (
trim($line)==""$start true;//最初に空だった所が本文?かなぁ
    
if ($start) echo htmlspecialchars($line),$nl;//本文表示
    
$line fgets($sock,512);//次の行取得
    
if(empty($line)) break;//空なら終る
  
}
//一覧表示
} else {
  
$data _sendcmd("STAT");//STAT -件数とサイズ取得 +OK 8 1234
  
sscanf($data'+OK %d %d'$num$size);
  echo 
"新着メッセージ $num 件",$nl,$nl;
  if (
$num == "0") {
    
$buf _sendcmd("QUIT");
    
fclose($sock);
    
session_destroy();
    exit;
  }
  
//メッセージの分だけループ
  
for($i=1;$i<=$num;$i++) {
    
$subj "";
    
$line _sendcmd("TOP $i 0");//TOP n line -n番目のを本文をline行取得(ヘッダ含)0ならヘッダのみ
    
while (!ereg("^\.\r\n",$line)) {
      if (
ereg("^Subject:"$line)) {
        
$subj ereg_replace("^[^:]+: *"""$line);
        
$regs "";
        if(
eregi("(.*)=\?iso-2022-jp\?B\?([^\?]+)\?=(.*)",$subj,$regs))
          
$subj $regs[1].base64_decode($regs[2]).$regs[3];
        
$subj mb_convert_encoding($subj"SJIS""JIS");
      }
      
$line fgets($sock,512);
      if(empty(
$line)) break;
    }
    if (
trim($subj)==""$subj "(無題)";
    echo 
"$i.<a href=pop.php?view=$i&".SID.">$subj</a><br>\n";
  }
}
$buf _sendcmd("QUIT"); //バイバイ
fclose($sock);
?>
</body></html>