1

Gmail アカウントをチェックし、メッセージから XLS 添付ファイルを抽出するスクリプトを作成しました。次のコードを使用して、本文から添付ファイルを取得しています。

$mege = imap_fetchbody($connection,$message_number,2);

メッセージは問題なく取得されています。上記のコードの出力のサンプルを次に示します。

-Apple-Mail=_9EBAFC63-4E12-4E64-A4F9-F8D5834F3523 Content-Transfer-Encoding: 7bit Content-Type: text/html; charset=us-ascii --Apple-Mail=_9EBAFC63-4E12-4E64-A4F9-F8D5834F3523 Content-Disposition: 添付ファイル。filename=test.xls Content-Type: アプリケーション/オクテット ストリーム。x-mac-type=584C5338; x-mac-creator=5843454C; x-unix-mode=0644; name="test.xls" Content-Transfer-Encoding: base64 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAAAAAQAAAAAAAAAA EAAAIQAAAAEAAAAD+////AAAAAAAAAAD//////////////////////// /////////////////////////////////////////////// /////////////////////////////////////////////// /////////////////////////////////////////////// /////////////////////////////////bABpAGIAcgBpADEAHgDwAAAACACQAQAAAAIA2gcBQwBhAGwAaQBiAHIAaQAxAB4A8AAAAAAgAkAEA...

これは、XLS ファイルが base64 でエンコードされているためです。ただし、メッセージをデコードしてファイルに保存すると、空の Excel ファイルが生成されます。ただし、エクセルファイルです。

ファイルに書き込む前に、これを使用してコンテンツをデコードしています。

$message=imap_base64($mege);

ファイルにデータを入力するために、添付ファイルに対して他に何かする必要があるかどうか疑問に思っています。

4

1 に答える 1

0

添付ファイルだけでなく、メール メッセージの本文全体を取得しています。Content-Transfer-Encoding欠けているのは、MIME 構造を解析し、実際の興味深い部分を見つけ、MIME コンテナーからその部分を抽出し、その後ヘッダー (この特定のケースでは "base64")に従ってデコードするコードです。やみくもに全身をbase64でデコードして、見返りに添付ファイルを取得することはできません.

于 2013-04-23T20:59:47.200 に答える