PHP 電子メール解析: 電子メールからの情報の解析と抽出
一般的な通信方法として、電子メールには多くの有用な情報が含まれていることがよくあります。プログラミングでは、後続の処理のために電子メールを解析し、その内容を抽出する必要がある場合があります。この記事では、PHP を使用して電子メールから情報を解析および抽出する方法について説明し、具体的なコード例を示します。
1. メールを解析する
PHP では、組み込みの imap 拡張機能を使用してメールを解析できます。 imap 拡張機能は、メールボックス サーバーへの接続、メールの読み取り、内容の解析に役立つ一連の機能を提供します。電子メールを解析するサンプル コードを次に示します。
<?php // 连接到邮箱服务器 $mailbox = imap_open('{imap.example.com:993/ssl}INBOX', 'your_username', 'your_password'); // 获取邮件数量 $mailCount = imap_num_msg($mailbox); // 循环遍历每封邮件 for ($i = 1; $i <= $mailCount; $i++) { // 获取邮件头信息 $header = imap_headerinfo($mailbox, $i); // 打印邮件主题和发件人 echo "主题:{$header->subject} "; echo "发件人:{$header->fromaddress} "; // 获取邮件内容 $body = imap_body($mailbox, $i); // 打印邮件内容 echo "内容:{$body} "; // 进行其他操作,如提取附件等 // 标记邮件为已读 imap_setflag_full($mailbox, $i, "\Seen"); } // 关闭邮箱连接 imap_close($mailbox); ?>
上記のコードは、まずメールボックス サーバーに接続し、次に電子メールの数を取得し、各電子メールをループします。件名や送信者などの電子メールのヘッダー情報は、imap_headerinfo 関数を呼び出すことで取得できます。電子メールの内容は、imap_body 関数を呼び出すことで取得できます。実際の使用では、カーボンコピーの人物、時刻など、必要に応じてさらに多くの電子メール情報を抽出できます。
2. メール内の情報を抽出する
メール内の情報には、テキスト、HTML コンテンツ、添付ファイルなどが含まれる場合があります。 PHP では、さまざまな文字列処理関数と正規表現を使用して、電子メールから情報を抽出できます。以下に、一般的な要件と対応する抽出方法を示します。
電子メール内のリンクは通常、<a href="%E3%81%A7%E7%B5%82%E3%82%8F%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%20URL">テキスト</a>
の形式。正規表現を使用してリンクを抽出できます。サンプル コードは次のとおりです。
preg_match_all('/<as+href=['"]([^"']+)["'][^>]*>(.*?)</a>/i', $body, $matches); // 打印提取到的链接 foreach ($matches[1] as $url) { echo "链接:{$url} "; }
電子メール内の画像は通常、<img src="url" alt=" で終わります。テキスト」>
が表示されます。正規表現を使用して画像 URL を抽出できます。サンプル コードは次のとおりです。
preg_match_all('/<img s+src=['"]([^"']+)["'][^ alt="PHP 電子メール解析: 電子メールから情報を解析して抽出します。" >]*>/i', $body, $matches); // 打印提取到的图片URL foreach ($matches[1] as $url) { echo "图片URL:{$url} "; }