(PHP 5 >= 5.1.3, PHP 7, PHP 8)
imap_savebody — Save a specific body section to a file
$imap,$file,$message_num,$section = "",$flags = 0Saves a part or the whole body of the specified message.
imapAn IMAP\Connection instance.
fileThe path to the saved file as a string, or a valid file descriptor returned by fopen() .
message_numThe message number
sectionThe part number. It is a string of integers delimited by period which index into a body part list as per the IMAP4 specification
flagsA bitmask with one or more of the following:
FT_UID - The message_num is a UID
FT_PEEK - Do not set the \Seen flag if
not already set
FT_INTERNAL - The return string is in
internal format, will not canonicalize to CRLF.
| Version | Description |
|---|---|
| 8.1.0 |
The imap parameter expects an IMAP\Connection
instance now; previously, a valid imap resource was expected.
|
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.