[メールヘッダの本文抜き出しについて(PHP)]

以下のようなスクリプトを用いて、[From:]を抜き出しました。さて、本文を抜き出すにはどうしたら良いでしょうか?

$stdin = fopen(’php://stdin’,’r’);
while(!feof($stdin)) {
$value = fgets($stdin, 1024);
if(eregi(’^From: *(.+)’,$value,$from_value)) {
break;
}
}
よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:esseesse No.1

回答回数192ベストアンサー獲得回数0

ポイント20pt

メールはヘッダとボディ(本文)の間に空行が1行だけ入っています。

ですから、最初の空行を認識して、それ以降を本文とみなします。

具体的にはCR+LFが2つ続いているところを検索して、それ以降は本文、とします。

id:akame

ご回答ありがとうございます。

なるほど、空行で判断して、、という事ですね。

具体的なスクリプトが示されたURLがあると助かります。よろしくお願いいたします。

2004/09/01 18:08:55
id:stakaha No.2

回答回数20ベストアンサー獲得回数0

ポイント20pt

さだかではないですが、こんな感じでしょうか・・・

本文 = substr($data,strpos($data,”¥r¥n¥r¥n”)+strlen(”¥r¥n¥r¥n”));

本文 = substr($data,strpos($data,”¥n¥n”)+strlen(”¥n¥n”));

¥r¥nが最初に2つ出現するところが本文の始まりです。

id:akame

具体的なソースをありがとうございます。

試してみます。

引き続きよろしくお願いいたします。

2004/09/01 18:23:54
id:esseesse No.3

回答回数192ベストアンサー獲得回数0

ポイント20pt

こういうライブラリを使う、という手もありでいいのでしょうか。

http://www.hatena.ne.jp/1094028356#

[メールヘッダの本文抜き出しについて(PHP)] 以下のようなスクリプトを用いて、[From:]を抜き出しました。さて、本文を抜き出すにはどうしたら良いでしょうか? $stdin = f.. - 人力検索はてな

$stdin = fopen(’php://stdin’,’r’);

while(!feof($stdin)) {

$value = fgets($stdin, 1024);

if(eregi(’^From: *(.+)’,$value,$from_value)) {

continue;

}

if(eregi(’^$’,$value)) {

break;

}

}

while(!feof($stdin)) {

$value = fgets($stdin, 1024);

$body = $body.$value.”¥n”;

}

動作チェックしたわけではないですが、上記のイメージでいかがでしょうか。

id:akame

具体的なソースをありがとうございます。

試させていただきます。

引き続きお願いいたします。

2004/09/01 19:17:13
id:aki73ix No.4

回答回数5224ベストアンサー獲得回数27

ポイント30pt

ソースです

PHPで使用するサンプルメールです

2つのメールがくっついています

メールは受信時に最後が.だと本文の終わりをあらわします

実行結果です

id:akame

いつもお世話になっております。。

ソースまで示して頂き、ありがとうございます。

私の現在のソース

$stdin = fopen(’php://stdin’,’r’);

while(!feof($stdin)) {

$value = fgets($stdin, 1024);

if(eregi(’^From: *(.+)’,$value,$from_value)) {

break;

}

}

$from = trim($from_value[1]);

に、単純に本文を抜き出すスクリプトを加えるとどのようになりますでしょうか?

お願いいたしますm(__)m

2004/09/02 17:22:17

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

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

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

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

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