[PHP-users 26672] Re: PEAR のPOP3で送信元アドレスが取得できない問題

Takaaki Hiramatsu thiramatsu @ iflat.co.jp
2005年 8月 29日 (月) 01:40:01 JST


平松と申します。

> 	print $msg."<br><br>";

ではなく、

print htmlspecialchars($msg);

しても同じですか?あるいはHTMLのソースを見た結果がそうなのですか?

echo $msg;

としていて、< > の部分がブラウザでタグと判断されて無視されている
話ではないですよね?



From: 倉谷蓮(有限会社コットンシステム開発) <ren @ ctnml.net>
Date: Mon, 29 Aug 2005 00:12:45 +0900
Subject: [PHP-users 26669] PEAR のPOP3で送信元アドレスが取得できない問題

> 以前PEARのPOP3.phpについて投稿しました倉谷です。
> 今回も同じくPOP3.phpについてどうしても解決できない問題に当たり投稿に踏み切りました、よろしくお願いします。
> 
> 今回目的とするプログラムはPOP3サーバーに接続し、そこにあるメールを一括受信しそのメールのタイトルや本文、そして送信者のメールアドレスなど基本的な情報を取得しようというものです。
> 
> <?
> require_once("Net/POP3.php");
> $pop3 = new Net_POP3;
> $res=$pop3->connect('POP3サーバーのホスト名',110);
> if(PEAR::isError($res))die("error");
> $res=$pop3->login("ユーザー名","パス");
> if(PEAR::isError($res))die("error");
> 
> $list=$pop3->getListing();
> foreach($list as $item){
> 	$id=$item["msg_id"];
> 	$msg= $pop3->getMsg($id);
> 	print $msg."<br><br>";
> }
> $pop3->disconnect();
> ?>
> 
> 本当は$msgをmimeDecodeで要素ごとに取得しています。
> 今当たっている問題はその要素で、Subjectや本文などはとれているのですがreturn-pathやFrom,TOのメアド部分がとれないというものです。
> おかしいなと思い$msgを上のように生で表示してみると
> 
> Return-Path: Received: from mx.crocus.ocn.ne.jp (mx.crocus.ocn.ne.jp [222.146.51.144]) by crocus.ocn.ne.jp (Postfix) with ESMTP id 1F22F2F25 for ; Sun, 28 Aug 2005 22:05:02 +0900 (JST) Received: from server.ctnml.net (125.109.138.210.bn.2iij.net [210.138.109.125]) by mx.crocus.ocn.ne.jp (Postfix) with ESMTP id 7FA552ED0 for ; Sun, 28 Aug 2005 22:05:01 +0900 (JST) Date: Sun, 28 Aug 2005 22:05:01 +0900 From: =?ISO-2022-JP?B?GyRCQVJDK08hGyhCKBskQk0tOEIycTxSJTMlQyVIJXMlNyU5JUYlYDMrSC8bKEIp?= X-Mailer: EdMax Ver3.06 MIME-Version: 1.0 To: =?ISO-2022-JP?B?GyRCQVJDK08hGyhCKE9DTik=?= Subject: =?ISO-2022-JP?B?GyRCJD8kJCRIJGsbKEI=?= Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Message-Id: <20050828130403.0B5A3FB018E @ server.ctnml.net> 本文 
> 
> このように <ren @ ctnml.net> と入るはずの文字が完全に消えている状態です。
> なお、対象としているPOP3サーバーはプロバイダ(OCN)の提供するものですのでサーバー側の問題とはあまり考えられません。
> 念のためこのサーバーにRETRを投げてみるときちんとRetrurn-Path: <ren @ ctnml.net>と返ってきています。
> POP3.phpはサーバーに対してRETRを投げその返しを見てるんだろうと予測しソースを読んだところまさにそのとおりでした。
> RETRコマンドを送りその返しの最初3字がOK+だったら返しの文章を1行ずつよみつなげていくという_getMultiline部分(1120行目)が要だろうと思いここで$tmpを毎回表示したんですがこの部分ですでにReturn-Pathの値は消えていました。
> となると_recvLnが原因かと思い見てみたところsocket部へ突入してしまい、一応socket.phpのほうも見ましたがあまりに深く入りすぎ結局どこで消えてしまっているのか解決できませんでした。
> この<メアド>部分が消えてしまうことについて何か知っていることありましたら教えていただけませんか?
> 
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3

________________________

あいふらっと株式会社
代表取締役 平松 孝章(ひらまつたかあき)
〒168-0073 東京都 杉並区 下高井戸3-8-6
TEL 03-5316-6086  FAX 03-5316-6087
携帯:090-7017-4711
MAIL: thiramatsu @ iflat.co.jp
URL: http://www.iflat.co.jp
________________________





PHP-users メーリングリストの案内