CakePHP3でメールの受信内容を確認&処理させる方法

CakePHP3でメールの受信内容をチェックする方法についてまとめてました。

背景として、決済システムが別会社ということもあり、注文を受け付けた場合トリガーとなるものが受注速報メールしかありませんでした。

なので、受注速報メールが届く専用のメールアドレスを作成し、プログラムでチェックすることになりました。

メールの受信内容を確認する方法は色々ある

メールの受信内容を確認する方法は色々あるようですが、サーバーの設定など影響を受けない方法を探したところ「Net_POP3」を使用することになりました。

開発フレームワークはCakePHP3で構築しているため、今回はCakePHP3に組み込んでみたいと思います。

Composerを使って「Net_POP3」をインストール

CakePHP3にComposerを使って「Net_POP3」をインストールするには、composer.jsonファイルに下記を追記します。

composer.jsonファイルを修正

■requireに黄色部分を追記

■repositoriesを追加

■configに黄色部分を追記

コマンドを実行する

composer.jsonファイルの修正が完了したら、プロジェクト配下で下記コマンドを実行します。

composer require pear-pear.php.net/Net_POP3

実行ログ

実行が完了したら、「vendor」フォルダ内に下記フォルダが作成されます。

「Net_POP3」ファイルを修正

このままだとPHPのバージョンによってはエラーが発生するので、下記ファイルを修正します。

/cakephp3/vendor/pear-pear.php.net/Net_POP3/Net/POP3.php

コンストラクタ名をクラス名から「  __construct()」に書き換えます。

スポンサーリンク

プログラムを書く

今回はバッチを想定していたので、Shellで書いています。Controllerでも問題なく動作します。

過去のメール内容を取得したい場合は、「$pop->numMsg()」でメール件数のMAX値が取得できるので、MAX値までループさせることで過去メールも取得ができます。

最後に

ここまでたどり着くのに半日ほどかかりました。また、本文の文字化け解消も結構時間かかりました。(笑)

件名、送信元メールアドレス、IPなどチェックすることで偽メールを除去しながら受注メールの処理ができるかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です