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