SunshinePHP 2016


(PHP 5 >= 5.1.3)

imap_savebodySauvegarde une partie spécifique du corps dans un fichier


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

Sauvegarde une partie du corps du message spécifié.

Liste de paramètres


Un flux IMAP retourné par la fonction imap_open().


Le chemin vers le fichier de sauvegarde, sous la forme d'une chaîne de caractères ou un descripteur de fichier valide retourné par la fonction fopen().


Le numéro du message


Le numéro de la section. C'est une chaîne de caractères d'entiers, délimités par une virgule qui correspondent à l'index dans la liste des sections du corps, tel que prévu par la spécification IMAP4.


Un masque qui contient une ou plusieurs des valeurs suivantes :

  • FT_UID - Le numéro msg_number est un UID
  • FT_PEEK - Ne pas définir le drapeau \Seen s'il n'est pas déjà défini
  • FT_INTERNAL - La chaîne de caractères retournée est dans un format interne, qui ne correspondant pas à CRLF.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Voir aussi

add a note add a note

User Contributed Notes 4 notes

3 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
8 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
6 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
7 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