先ほどメール送信した項目をブラウザでメール出力してみました。 メールサーバーに接続/切断するには、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 件のコメント:
コメントを投稿