imap_savebody
(PHP 5 >= 5.1.3, PHP 7, PHP 8)
imap_savebody — 指定した本文部をファイルに保存する
説明
imap_savebody(
IMAP\Connection
resource|string|int
int
string
int
): bool
IMAP\Connection
$imap
,resource|string|int
$file
,int
$message_num
,string
$section
= "",int
$flags
= 0): bool
指定したメッセージの本文全体、あるいはその一部を保存します。
パラメータ
imap
IMAP\Connection クラスのインスタンス。
file
-
保存先ファイルへのパスを表す文字列、あるいは fopen() が返すファイル記述子。
message_num
-
メッセージ番号。
section
-
パート番号。ピリオドで区切られた整数文字列を指定します。 これは、IMAP4 仕様における本文パートのリストへのインデックスとなります。
flags
-
ビットマスクであり、以下の組合わせとなります。
-
FT_UID
-message_num
は UID である -
FT_PEEK
- 既に設定されていない場合、 \Seen フラグを設定しない -
FT_INTERNAL
- 内部フォーマットで文字列を返す。CRLF に正規化しない。
-
変更履歴
バージョン | 説明 |
---|---|
8.1.0 |
引数 imap は、IMAP\Connection
クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、有効な imap リソース が期待されていました。
|
+add a note
User Contributed Notes 1 note
anon ¶
12 years ago
By using imap_fetchbody() you may run in trouble by using too much memory. Using imap_savebody() may prevent this.
But the content will be encoded, in other words it is useless. Adding a filter can help here.
<?php
$whandle = fopen('./incomming/tmp.tif','w');
stream_filter_append($whandle,
'convert.base64-decode',STREAM_FILTER_WRITE);
imap_savebody ($mbox, $whandle, $i, $partcounter++);
fclose($whandle);
?>
NOTE: To find the proper filter you need to check the encoding given by the structure of the body.