(PHP 5 >= 5.1.3, PHP 7, PHP 8)

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


    resource $imap_stream,
    mixed $file,
    int $msg_number,
    string $part_number = "",
    int $options = 0
): bool

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

User Contributed Notes 4 notes

11 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.
janus at forty-seven dot info
14 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
15 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
stupergenius at gmail dot com
16 years ago
This function will save ALL information from the email if the part number is left out. Pretty handy for archiving.
To Top