Xserverでメール解析 PHP


ちょっと、検索してノウハウを集めるのに時間がかかったので、ここにまとめておきます。

大きくまとめると
1.Xserverで「メールの振り分け」をします。受信メールをPHPのスクリプトに渡すということです。
2.PEARの環境下で、mimeDecode.phpを使い解析する

となります。

1について

メールの振り分けを利用して、自分のPHPスクリプトを起動させます。

Xserverのマニュアル
https://www.xserver.ne.jp/manual/man_mail_sorting.php

条件1(キーワード)には、受信するメールアドレスを書きます。
あとは、黒枠のところにチェックを入れます。

処理方法(宛先)で、「その他の宛先」を選択すると、
テキストエリアが開くので、以下のように記入します

「|/usr/bin/php7.4 /home/アカウントID/利用ドメイン/public_html/動かすPHPスクリプト名」

ここでは、php7.4にしていますが、
サーバーパネルの

に合わせるとよいのではないでしょうか。
使えるPHPバージョンは、
にあります。

以上で、1の作業は終わりです。

次に2の作業です。

まずは、mimeDecode.phpを使うためには、PEARが動かなければなりません。
Xserverには、PEARがすでにインストールされています。
(これがわかるまで時間がかかりました)

SSHで調べると、PEARのPATHは

/usr/share/pear
でした。
調べ方、SSHで「pear config-get php_dir」と打って下さい。
パスがでます。

これをphp.iniに以下のように追加します。

[pear]

include_path=”.:/usr/share/pear”

php.iniの編集は、

サーバーパネルのから

赤枠からできます。

こうしてから、mimeDecode.phpをダウンロードして、所定のところにアップロードします

ダウンロードできるサイトは、こちら
https://pear.php.net/package/Mail_mimeDecode/download

以下の赤枠からダウンロードします。

解凍して、「public_html/Mail/mimeDecode.php」となるようにアップロードします。

あと、もう少しです。

あとは、それを使って解析するスクリプトです。
いろいろネットにはあったのですが、以下がわかりやすかったと思います。

ここに書かれている通りで、$from,$subject,$bodyが取得できます。

$fromは、名前とメールアドレスなどが混在したので、以下のように分離しました。
パースライブラリとかもあったのですが、インストールがまた面倒でやめました。

$from_a=explode(“<“,$from);

$name=$from_a[0];

$from=explode(“>”,$from_a[1])[0];

いくつか、fromのパターンを見たのですが、だいたいこれでいいかなと。

とりあえず、解析はこれで終わり。

あとは、どのように使うかです。

私は、メールでwordpressの投稿ができるようにしました。

いろいろな方から、投稿用のアドレスに情報を受信して、いったんは非公開にしておき、
自分で確認して、公開するというような使い方です。

wp_insert_post

などを使うと、wordpressにログインせずに、投稿ができます。これは、そんなに難しくありません。