以下のようなスクリプトを用いて、[From:]を抜き出しました。さて、本文を抜き出すにはどうしたら良いでしょうか?
$stdin = fopen(’php://stdin’,’r’);
while(!feof($stdin)) {
$value = fgets($stdin, 1024);
if(eregi(’^From: *(.+)’,$value,$from_value)) {
break;
}
}
よろしくお願いいたします。
メールはヘッダとボディ(本文)の間に空行が1行だけ入っています。
ですから、最初の空行を認識して、それ以降を本文とみなします。
具体的にはCR+LFが2つ続いているところを検索して、それ以降は本文、とします。
さだかではないですが、こんな感じでしょうか・・・
本文 = 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つ出現するところが本文の始まりです。
具体的なソースをありがとうございます。
試してみます。
引き続きよろしくお願いいたします。
http://pear.php.net/manual/ja/package.mail.mail-mime.php
PEAR :: Manual :: Mail_Mime
こういうライブラリを使う、という手もありでいいのでしょうか。
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”;
}
動作チェックしたわけではないですが、上記のイメージでいかがでしょうか。
具体的なソースをありがとうございます。
試させていただきます。
引き続きお願いいたします。
ソースです
PHPで使用するサンプルメールです
2つのメールがくっついています
メールは受信時に最後が.だと本文の終わりをあらわします
実行結果です
いつもお世話になっております。。
ソースまで示して頂き、ありがとうございます。
私の現在のソース
$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
ご回答ありがとうございます。
なるほど、空行で判断して、、という事ですね。
具体的なスクリプトが示されたURLがあると助かります。よろしくお願いいたします。