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);
ファイルにデータを入力するために、添付ファイルに対して他に何かする必要があるかどうか疑問に思っています。