PHP 7.2.0 Beta 1 Released


(PHP 5 >= 5.1.3, PHP 7)

imap_savebodyGuardar una sección del cuerpo específica en un fichero


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

Guarda una parte del cuerpo completo de un mensaje especificado.



IMAP stream devuelto por imap_open().


La ruta al fichero guardado como una cadena, o un descriptor de fichero válido devuelto por fopen().


El número de mensaje


El número de parte. Es una cadena de enteros delimitada por puntos que indexa a una lista de partes de cuerpos como por la especificación IMAP4


Una máscara de bits de uno o más de lo siguiente:

  • FT_UID - msg_number es un UID
  • FT_PEEK - No establecer la bandera \Seen si no lo está ya
  • FT_INTERNAL - La cadena devuelta está en formato intermo, no canonizará a CRLF.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ver también

add a note add a note

User Contributed Notes 4 notes

4 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.

= fopen('./incomming/tmp.tif','w');


imap_savebody ($mbox, $whandle, $i, $partcounter++);


NOTE: To find the proper filter you need to check the encoding given by the structure of the body.
stupergenius at gmail dot com
9 years ago
This function will save ALL information from the email if the part number is left out. Pretty handy for archiving.
janus at forty-seven dot info
8 years ago
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:

= "/path/to/attachment";
$tFileHandle = fopen($tFile, "r");

//get the content of the file into a string
$tFileOutput = $tFileOutput . fgets($tFileHandle, 4096);

fclose ($tFileHandle);
$tFileHandle = fopen($tFile, "w");
//write the new 8Bit string to the file
fwrite($tFileHandle, imap_qprint($tFileOutput));
fclose ($tFileHandle);
technocraze at gmail dot com
9 years ago
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
To Top