PHPでsoftbank ケータイからのメールを解析できません。

PHPスクリプトはレッツPHP!様の写メール BBSなのですが、友人のsoftbank携帯の
912SHで送信してもらったところ、件名が入らないようでした。

自分なりにソースを探したところ、正規表現で件名を拾っているようなのですが、
softbankの912SHのメールヘッダーのSubject:の後に\nの改行が入っているためなのか
件名が取れません。。。

この症状などに悩まされております。すみませんが、解決策等ご存知の方おられましたら
お答お願い致します。


以下、レッツPHP!様の写メール BBSの件名抽出の部分の抜粋です。

$head = ereg_replace("\r\n? ", "", $head);
// サブジェクトの抽出
if (eregi("\nSubject:[ \t]*([^\r\n]+)", $head, $subreg)) {
$subject = $subreg[1];
while (eregi("(.*)=\?iso-2022-jp\?B\?([^?]+)\?=(.*)",$subject,$regs)) {//MIME Bデコード
$subject = $regs[1].base64_decode($regs[2]).$regs[3];
}
while (eregi("(.*)=\?iso-2022-jp\?Q\?([^?]+)\?=(.*)",$subject,$regs)) {//MIME Qデコード
$subject = $regs[1].quoted_printable_decode($regs[2]).$regs[3];
}
$subject = htmlspecialchars(convert($subject));
// 拒否件名
foreach ($deny_subj as $dsubj) {
if (stristr($subject, $dsubj)) $write = false;
}
}

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/09/15 15:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント60pt

メールヘッダーのSubject:の後に\nの改行が入っているためなのか

原因はそれでしょうね。


電子メールのヘッダは、1行に収まらない場合、改行して先頭に空白文字を置くことになっています。

そこで、ご質問のソースの1行目は下記のようにすべきだと思います。

$head = ereg_replace("\r\n? ", "", $head);
↓
$head = ereg_replace("\r\n?|[\r\n]+[\t ]+", "", $head);

ただし、$head に入っている文字コードが処理系の文字コードと同じであることが前提です。

また、2行目以降の処理が正常に行われるかどうかは検証していません。

id:jamireo

ありがとうございます!

さっそく試してみます。(^-^

2008/09/08 19:39:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません