web-dev-qa-db-ja.com

PHPでメールの解析/デコードを処理する最良の方法?

現在、PEARライブラリのmimeDecode.phpを使用して受信メールを解析しています。多くの問題があり、多くのメッセージのデコードに失敗しているようですので、置き換えたいと思いますより良いもので。

To、from、bodyなど、メッセージの一部を適切に分離できるものを探しています。理想的には、base64、uuencode、quoted printableなどのすべての一般的なエンコーディングメソッドを処理できるはずです。

同じメッセージのプレーンテキストとhtmlバージョンの両方が1つのメールに含まれている状況では、それらの違いを知って、どの部分を表示するかを選択できるようにするのが理想的です。

現時点では、添付ファイルについては心配していませんが、将来実装したい場合に備えて、添付ファイルについての知識があればいいと思います。

PHPには、Wordのimapで始まる関数のグループがあり、私が望んでいるように見えるかもしれませんが、試してみないとわかりません。

現在、PHPでメッセージをオンザフライでデコードしています。そのため、PHP置換ソリューションを探しています。

誰かがこれを私に正しい方向に向けることができる経験をしていますか?結局のところ、結局のところ、必要なことを実行しないようなものを使い始めたくないのです。

25
Sgraffite

おかしい、あなたは尋ねるべきです...私は実際に今簡単な通知システムに取り組んでいます。バウンスマネージャーを完成させるために、実装に Zend_Mail を使用しました。それはあなたが探しているほとんどすべての機能を持っています...あなたはメールボックス(POP3、IMAP、Mbox、およびMaildir)に接続し、そこからメッセージを引き出し、それらすべてのメッセージを操作することができます。

マルチパートメッセージを処理しますが、パートは扱いにくい場合があります。作業しているNDRの添付された元のメッセージ部分がどれであるかを理解するのに苦労しましたが、ドキュメントで何かを見逃しているような気がします。私の使用法はかなり単純だったので、エンコーディングの処理方法はわかりませんが、あなたが言及したすべてのエンコーディングの準備があると確信しています。ドキュメントを確認し、APIを参照してください。

6
prodigitalson

私は最近PHPメールパーサーを開発し、本番環境で使用しています。
私はそれに非常に満足しており、一部の開発者はそれを分岐しました:

https://github.com/plancake/official-library-php-email-parser

12
dan

私はこの質問が4歳になったことを知っています...しかし、メール解析ライブラリが必要になり、利用可能なオプションのいずれにも満足できませんでした。信頼性の高い、PSR-2に準拠し、作曲家を介してインストールできるものが欲しかった。

composer require zbateson/mail-mime-parser

これは独自のパーサーであり、他の実装の既知の問題やバグを回避するためにゼロから構築されています。広範囲にわたってテストされ、非常に広く使用されています。

ライブラリはPsr7ストリームを利用しており、好きな種類のストリームを渡すことができます。また、すべての情報をメモリに保存するわけではありません。非常に大きな添付ファイルを、必要に応じて文字列ではなくストリームとして返すことができるため、メモリを使い果たしません。同様に、メッセージ全体がメモリに直接格納されることはなく、ストリームへの参照のみ、およびヘッダーはメモリ内に保持されます。

https://github.com/zbateson/mail-mime-parser

ガイドとAPIについては website を確認してください。バグや誤植が見つかったり、改善が見られたりした場合は、お気軽に問題をオープンするか、すぐに調査してプルリクエストに貢献してください。 )

7
Zaahid

私はすべての問題を修正するためにphp-mime-mail-parserをフォークしました: php-mime-mail-parserのフォーク

52を超えるテストと764のアサーションコードカバレッジ:100%行、100%関数とメソッド、100%クラスと特性

使用するにはPECLパッケージMailParseが必要ですが、ラッパーは問題なく完全にテストされています。

4
eXorus

完全を期すために、ここで試してみます。 http://code.google.com/p/php-mime-mail-parser/ -PHP MailParseのラッパーであり、インストールする必要があります。

2
Slawa

私は現在、使いやすく堅牢なMIMEメール解析ライブラリも探しており、現在eZ Componentsの Mail コンポーネントを真剣に調べています。しかし、echo $email->text;echo $email->html;と同じくらい簡単なものを探しているとしたら、私はがっかりするでしょう。実際、MIMEの動作方法により、このような単純化は可能ではないと私は思います。しかし、PHPの世界では、これは最良の選択肢のようです。

私はZend_Mailコンポーネントを使用して現在のプロジェクトの作業を開始しましたが、実際にそれらのメールパーツとエンコードされたヘッダーの内部を掘り下げるときが来たとき、Zend_Mailはほとんどあなたを寒さから解放します。ほとんど自分でデコードする必要がありますが、これはまったく面白くありません。

[〜#〜] imap [〜#〜] PHP拡張機能に関しては、MIMEデコードではなく、メールボックスからのメッセージの取得を処理するためのものです。ただし、 Mailparse PECL拡張機能は、その問題セットを正確に処理します。私はまだ試していませんが、実際に必要なデータを取得するために、多くのコードを記述します。

1
nnc