カテゴリ: PHP 更新日: 2026/05/10

PHPでメールを受信して解析する方法を完全解説!初心者でもわかるIMAP・POP3入門

PHP の メールの受信と解析(IMAP, POP3)
PHP の メールの受信と解析(IMAP, POP3)

先生と生徒の会話形式で理解しよう

生徒

「PHPでメールを送ることは少しわかってきたんですが、受信することもできるんですか?」

先生

「できますよ。PHPではIMAPやPOP3という仕組みを使って、メールを受信して中身を読み取れます。」

生徒

「IMAPとかPOP3って聞いたことはありますが、正直よくわからなくて……。」

先生

「大丈夫です。メールボックスをのぞく方法だと思って、ゆっくり理解していきましょう。」

1. PHPでメールを受信できるとはどういうこと?

1. PHPでメールを受信できるとはどういうこと?
1. PHPでメールを受信できるとはどういうこと?

PHP(ピーエイチピー)でメールを受信するとは、メールサーバーに届いているメールをプログラムで読み取ることを意味します。普段はメールソフトやWebメールで受信ボタンを押して確認しますが、その作業をPHPが代わりに行うイメージです。

たとえば、お問い合わせフォームに届いたメールを自動で確認したり、件名や本文を取り出して保存したりできます。人が画面を見なくても処理できる点が大きな特徴です。

2. メール受信で使われるIMAPとPOP3とは?

2. メール受信で使われるIMAPとPOP3とは?
2. メール受信で使われるIMAPとPOP3とは?

メールを受信するときに使われる代表的な仕組みが、IMAP(アイマップ)とPOP3(ポップスリー)です。どちらも「メールサーバーからメールを取り出す方法」ですが、考え方が少し違います。

IMAPは、サーバー上にメールを残したまま内容を確認します。スマートフォンとパソコンで同じメールを見るような仕組みです。一方、POP3はメールを取り出して自分のところに保存する方式で、昔ながらの受信方法です。

3. PHPでIMAPを使う準備

3. PHPでIMAPを使う準備
3. PHPでIMAPを使う準備

PHPでIMAPを使うには、PHPにIMAP拡張機能が入っている必要があります。多くのレンタルサーバーでは最初から使える状態ですが、使えない場合は設定が必要です。

IMAPを使うときは、メールサーバーのアドレス、ユーザー名、パスワードを指定します。これは、郵便受けを開けるための鍵のようなものだと考えてください。

4. IMAPでメールボックスに接続する基本コード

4. IMAPでメールボックスに接続する基本コード
4. IMAPでメールボックスに接続する基本コード

まずはIMAPでメールサーバーに接続する基本的なPHPコードを見てみましょう。難しく見えても、役割を一つずつ理解すれば大丈夫です。


$hostname = '{mail.example.com:993/imap/ssl}INBOX';
$username = 'user@example.com';
$password = 'password';

$inbox = imap_open($hostname, $username, $password);

if ($inbox) {
  echo 'メールボックスに接続できました';
} else {
  echo '接続に失敗しました';
}

メールボックスに接続できました

imap_openは、メールボックスの扉を開く命令です。INBOXは受信箱を表します。

5. メールの件数を確認してみよう

5. メールの件数を確認してみよう
5. メールの件数を確認してみよう

接続できたら、次は何通メールが届いているかを確認します。これは、郵便受けに何通手紙が入っているか数える作業と同じです。


$emails = imap_num_msg($inbox);
echo 'メールは'.$emails.'通あります';

メールは3通あります

このように数字として取得できるので、条件分岐などにも使えます。

6. メールの件名と送信者を取得する

6. メールの件名と送信者を取得する
6. メールの件名と送信者を取得する

次に、実際のメールの中身を少し見てみましょう。ここでは件名と送信者を取り出します。


$header = imap_headerinfo($inbox, 1);
echo $header->subject;
echo $header->fromaddress;

お問い合わせありがとうございます
test@example.com

番号の「1」は一番新しいメールを指します。必要な情報だけを選んで使えるのが便利な点です。

7. メール本文を読み取る方法

7. メール本文を読み取る方法
7. メール本文を読み取る方法

メールの本文はimap_bodyを使って取得できます。長文でもそのまま読み取れるので、内容チェックに使えます。


$body = imap_body($inbox, 1);
echo $body;

こんにちは。
お問い合わせフォームから送信しました。

取得した本文は、画面に表示したり、ファイルに保存したりできます。

8. POP3を使う場合の考え方

8. POP3を使う場合の考え方
8. POP3を使う場合の考え方

POP3(ポップスリー)を使う場合も、基本的な流れは同じです。接続方法が少し変わるだけで、メールを取得して解析する考え方は共通しています。

POP3はメールを取り出すとサーバーから消える設定が多いため、「一度きりの確認」に向いています。用途に応じてIMAPと使い分けることが大切です。

9. メール受信後は必ず接続を閉じよう

9. メール受信後は必ず接続を閉じよう
9. メール受信後は必ず接続を閉じよう

最後に重要なのが、処理が終わったら接続を閉じることです。これは、開けた郵便受けをきちんと閉める作業にあたります。


imap_close($inbox);

これを忘れると、サーバーに余計な負担がかかることがあります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
PHP のメール送信の記事一覧へ
新着記事
New1
Python
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPのCSVファイルの読み書きと文字列処理を基礎から解説!初心者向けガイド
New4
PHP
PHPのメモリ管理と変数の破棄方法をやさしく解説!初心者でもわかるunsetの使い方
人気記事
No.1
Java&Spring記事人気No1
Python
PythonでAPIリクエストを送信する方法を完全解説!requestsライブラリで簡単API通信
No.2
Java&Spring記事人気No2
Python
Pythonで経過時間を計測する方法を完全解説!初心者でもわかる time.perf_counter() と time.sleep()
No.3
Java&Spring記事人気No3
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.4
Java&Spring記事人気No4
PHP
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.5
Java&Spring記事人気No5
PHP
PHP のフォームデータの受け取り($_POST, $_GET)を完全解説!初心者向けガイド
No.6
Java&Spring記事人気No6
Python
Pythonのタプルの要素を変更できない理由とその回避策を初心者向けに解説
No.7
Java&Spring記事人気No7
ChatGPT
ChatGPTでPythonコードを作成する方法!プロンプトの書き方と質問例を解説
No.8
Java&Spring記事人気No8
Python
Pythonのrequestsライブラリ完全入門!HTTPリクエストの送り方を初心者向けにやさしく解説