imap_savebody

(PHP 5 >= 5.1.3)

imap_savebodySave a specific body section to a file

Description

bool imap_savebody ( resource $imap_stream , mixed $file , int $msg_number [, string $part_number = "" [, int $options = 0 ]] )

Saves a part or the whole body of the specified message.

Parameters

imap_stream

An IMAP stream returned by imap_open().

file

The path to the saved file as a string, or a valid file descriptor returned by fopen().

msg_number

The message number

part_number

The part number. It is a string of integers delimited by period which index into a body part list as per the IMAP4 specification

options

A bitmask with one or more of the following:

  • FT_UID - The msg_number 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.

Return Values

Returns TRUE on success or FALSE on failure.

See Also

Коментарии

This function will save ALL information from the email if the part number is left out. Pretty handy for archiving.
2007-07-31 21:40:12
http://php5.kiev.ua/manual/ru/function.imap-savebody.html
I tried to use this function. But it seems it requires php_zip.dll to be load..  i got the php errror like below.

[20-Dec-2007 13:38:17] PHP Warning:  PHP Startup: Unable to load dynamic library './php_zip.dll' - ./php_zip.dll: cannot open shared object file: No such file or directory in Unknown on line 0
[20-Dec-2007 13:38:17] PHP Fatal error:  Call to undefined function imap_savebody() in /opt/oss/share/apache2/htdocs/blogtest/wp-inst/batch/pop3_mail.php on line 153
2007-12-20 02:38:53
http://php5.kiev.ua/manual/ru/function.imap-savebody.html
It seems that imap_savebody saves attachments with special characters above ascii 127 as quoted printable. 
But if you need it in utf8, you may use the imap_qprint function after the attachment is saved:

<?php
$tFile 
"/path/to/attachment";
$tFileOutput="";
$tFileHandle fopen($tFile"r");

//get the content of the file into a string
while(!feof($tFileHandle)) 
 
$tFileOutput $tFileOutput fgets($tFileHandle4096);

fclose ($tFileHandle);
           
$tFileHandle fopen($tFile"w");
//write the new 8Bit string to the file
fwrite($tFileHandleimap_qprint($tFileOutput));
fclose ($tFileHandle);
?>
2009-02-20 03:40:53
http://php5.kiev.ua/manual/ru/function.imap-savebody.html
Автор:
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.
2012-08-12 04:59:00
http://php5.kiev.ua/manual/ru/function.imap-savebody.html

    Поддержать сайт на родительском проекте КГБ