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

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;
}
}

●質問者: jamireo
●カテゴリ:インターネット ウェブ制作
✍キーワード:?B AS BBS ISO-2022-JP MIME
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pahoo
●60ポイント

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

原因はそれでしょうね。


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

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

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

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

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

◎質問者からの返答

ありがとうございます!

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

関連質問


●質問をもっと探す●



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