人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

宛先不明などで戻ってきたリターンメールの内容を取得し、送信した宛先に再送信しないようにしたいと思っています。

メール内容の取得は、PHPのfsockopenを使って出来ています。
ヘッダーの情報を解析して、正規表現でメールアドレスを抽出し、DBなどに保存して再送信しない。
と言うのもわかるのですが、参考サイトなども見当たらず、いまいち構造が掴めません。
(空メールや自動返信に関する説明は多くあるのですが…)

参考になるサイトや処理の考え方をアドバイスしていただけないでしょうか。

ちなみに、環境はPHP5.3.5とさくらインターネットのスタンダードでテストしています。

※出来ればPHPだけで何とか出来ればと思っています。
※PHPだけで無理な場合は、回答いただかなくて結構です。

●質問者: kt26
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB PHP いまいち さくらインターネット アドバイス
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● gaziro2000
●27ポイント

メール送信は、PHPからやりますよね?

メール送信前にDBを見て、送信NGアドレスかどうかをチェックする必要があると思います。

.

1.リターンメールの際のメールアドレスをDBに格納。(MySQLなど?)

.

2.メール送信する際に、DBに登録されているアドレスか確認をして、無ければメール送信。

.

で良いのではないでしょうか?

◎質問者からの返答

少々質問の意味を誤解されているようです。ここでの質問は「送信後」の事です。送信前ではありません。


送信先のメールアドレスが存在するか否か、mail関数で送信した時、


$flag = mail($to,$subject,$body,$headers);

if(flag==""){

送信されていない場合の処理

}


と言うような事は行っています。

ここでの質問はあくまで”受け取ったリターンメールに関する処理”方法をお尋ねしています。

送信時やDBのチェック方法ではありません。


2 ● yuyam-82
●27ポイント

VERPを使われてはいかがでしょう。

◎質問者からの返答

一行回答ではなく、もう少し質問を読んで具体的に回答いただければ良かったです。


3 ● tezcello
●26ポイント

エラー通知メールの内容についての記述があるらしいですが...例によって分かりにくいですねぇ。

http://weio.at.infoseek.co.jp/rfc1894ej.txt


時々届く事があるので、いくつか残しておいたのを見てみると、サーバによって違うみたいですね。

ヘッダ部は

Return-Path: <>

となっているのは共通なようですね

From MAILER-DAEMON

とか、

Subject: Undelivered Mail Returned to Sender

はよく似たものが多いようです。


メールの本文は、いろいろありました。

あるものは

の行があって、これ以下に配達できなかったメールのソースが(送信時のヘッダが付いた状態で)続いています。


別なのは

The Postfix program

<*****@********>: host ********[***.***.***.***] said:

550 Invalid recipient: <*****@********> (in reply to RCPT TO

command)

のような相手サーバからのステータスがあって、マルチパートで

Content-Description: Undelivered Message

Content-Type: message/rfc822

というヘッダに続いて

送信しようとしたメールのソースがあります。


相手サーバからのステータスなので、いろんなのがありそうです。

The Postfix program

<*****@********>: host ******[***.***.***.***] said: 550

<*****@********>: User unknown (in reply to RCPT TO command)

こんなのもありました。


単なる文字列のチェックですから、PHPで可能です。(自作のMLでは一部取り入れています)

既知のパターンでチェックしてみて、当てはまらないものは管理者宛に転送するとか、どこかに保存しておいて定期的に(人力で)作業するしかないでしょう。

この作業中に、また違ったパターンが見つかるでしょうから、都度追加していくという事になるでしょうね。

◎質問者からの返答

かなり細かく検証していただき、助かりました。ありがとうございます。


サイト運営で取り入れるなら、自サイトのサーバが発するリターンメールのパターンを解析して、正規表現でメールアドレスを抽出すれば、自動化は可能だと思います。

基本的にはそれで問題ないと思うのですが、別サーバの事も考慮しなければいけないと思い、悩んでいました。


PHPで出来ること(また出来ないこと)という点について、もう少し勉強してみます。回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ