21934


PHPのライブラリ [Zeta Components / Mail](https://github.com/zetacomponents/Mail)
を使ってメールデータの Subject や
From、添付ファイルなどを解析しようと思うのですが、付属のサンプルを見る限りメールボックス全体をパースする方法しかなく、単一のメールを読み込む方法に関する情報が見つかりませんでした。

[code]

    <?php
    $pop3 = new ezcMailPop3Transport( "pop3.example.com" );
    $pop3->authenticate( "user", "password" );
    $set = $pop3->fetchAll();
    $parser = new ezcMailParser();
    $mails = $parser->parseMail( $set );
    
[/code]

上記サンプルではPOP3接続したすべてのメールがパースされます。

やりたいこととしては file_get_contents('php://input') あるいは
file_get_contents('message.eml')
によって受け取った一通のメールデータ文字列を元にパースしたいため、上記方法ではうまく行きません。

[公式ドキュメント](http://ezcomponents.org/docs/tutorials/Mail)では

> The Mail component currently allows you to fetch and parse mail  
>  messages from POP3, IMAP, mbox files, single mail files and from  
>  variables.

と書かれているのでやり方があるように思えるのですがそういうためのものではないのでしょうか？

ちなみにですが下記のようにする事はできないようです。parseMail()
に渡すことのできるオブジェクトは「ezcMailParserSet」に限られているようです。

[code]

    <?php
    $data = file_get_contents('message.ml');
    $parser = new ezcMailParser();
    $mail = $parser->parseMail( $data );
    
[/code]

基本的には PEAR::Mail_mimeDecode
の代用で、より誤判定が少なく開発の止まっていないものを使いたいと考えてこのライブラリを調べているところです。php-mime-mail-parser
も良さそうだったのですが mailparse はインストール出来ない環境のため見送りました。

Zeta Components/Mail
でファイルを読み込んでパースする方法や、このような目的を果たせる文字化けに強いライブラリ等ご存知でしたら教えて下さい。


CC BY-SA 3.0
2016-02-10T06:24:55.700
21932
2016-02-10T06:43:10.077
10083
question
php
Zeta Components(eZ Components) Mailで一つのメールファイルの内容をパースしたい


自己解決しました。  
下記の2つの手順を記しておきます。

・メールファイルからパースする場合

[code]

    <?php
    $file = 'message.eml';
    $set = new ezcMailFileSet( array( $file ) );
    $parser = new ezcMailParser();
    $mail = $parser->parseMail($set);
    
[/code]

・メール文字列からパースする場合

[code]

    <?php
    $data = file_get_contents($file);
    $set = new ezcMailVariableSet($data);
    $parser = new ezcMailParser();
    $mail = $parser->parseMail($set);
    
[/code]


CC BY-SA 3.0
2016-02-10T06:43:10.077
21934
2016-02-10T06:43:10.077
10083
21932
answer