2011年4月11日月曜日

テスト送信したメールをブラウザでメール受信

先ほどメール送信した項目をブラウザでメール出力してみました。
メールサーバーに接続/切断するには、imap_open()、imap_close()関数を使用します。
imap_open(メールボックス,ユーザー名,パスワード,)
メールボックスには、「{ホスト名:ポート番号/プロトコル}メールボックスパス」の形式で指定します。
メールボックスパスには、ユーザーの個人メールボックスを表す「INBOX」が使用できるとのこと。

imap_close()関数は、接続しているメールサーバー切断します。
切断に成功するとIMAPストリームを返し、失敗するとFALSEを返します。

if ($mailcnt > 0){ チェックした結果、メールの受信数が一以上だったら、
受信したメール数だけループ処理します。

imap_header関数で、メールヘッダー情報のオブジェクトを取得します。
imap_fetchbody関数で、メール本文を取得します。ISO-2022-JPからUTF-8に
変換しています。

サンプルコード
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>テスト送信したメールをメール受信</title>
</head>
<body>
<table border="1" cellpadding="5" cellspacing="0" bordercolor="#666666">
<tr bgcolor="#EEEEBB">
<td align="center">No.</td>
<td align="center">件名</td>
<td align="center">名前</td>
<td align="center">E-MAIL</td>
<td align="center">受信日時</td>
<td align="center">内容</td>

</tr>
<tr>
<?php
//------------------------------------
// メールの受信設定
//------------------------------------
$mbox = imap_open("{ホスト名:110/pop3/notls}INBOX", 
"メールアカウント", "パスワード");
if ($mbox){
 $mboxes = imap_check($mbox);
 $mailcnt = $mboxes->Nmsgs;
 if ($mailcnt > 0){
             for ($i = 1;$i <= $mailcnt;$i++){
                 $header = imap_header($mbox, $i);
   $title = htmlspecialchars(mb_decode_mimeheader($header->subject));
   
   $fromdate= $header->date; 
   $from = $header->from; 
   $mailbox = $from[0]->mailbox;
   $email = $from[0]->mailbox."@".$from[0]->host;
   $namae = mb_decode_mimeheader($from[0]->personal);
  
   $content = imap_fetchbody($mbox,$i,1,FT_PEEK);
   $content=$charset .htmlspecialchars(mb_convert_encoding
  ($content,"UTF-8","ISO-2022-JP"));

?>
<tr>
<td align="center"><?= $i ?></td>
<td align="left"><?= $title ?></td>
<td align="left"><?= $namae ?></td>
<td align="left"><?= $email ?></td>
<td align="left"><?= $fromdate ?></td>
<td align="left"><?= $content ?></td>

</tr>
<?php
  }
 }
 imap_close($mbox);
}else{
        echo "メールボックスに接続できませんでした。";
}
?>

</table>
<br><?=$mailcnt ?>件のメールを受信しました<p>

</body>
</html>

下記のようなエラーが表示された場合。
/notlsを追加でエラーが回避され受信成功しました。
$mbox = imap_open("{ホスト名:110/pop3/notls}INBOX",
/notls サーバがそれをサポートしていたとしても、
セッションで start-TLS による暗号化を使用しません。

0 件のコメント:

コメントを投稿