PHP Conference Nagoya 2025

imap_savebody

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

imap_savebodySauvegarde une partie spécifique du corps dans un fichier

Description

imap_savebody(
    IMAP\Connection $imap,
    resource|string|int $file,
    int $message_num,
    string $section = "",
    int $flags = 0
): bool

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

Liste de paramètres

imap

Une instance de IMAP\Connection.

file

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().

message_num

Le numéro du message

section

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.

flags

Un masque qui contient une ou plusieurs des valeurs suivantes :

  • FT_UID - Le numéro message_num 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.

Historique

Version Description
8.1.0 La paramètre imap attend désormais une instance de IMAP\Connection ; auparavant, une ressource imap était attendue.

Voir aussi

add a note

User Contributed Notes 1 note

up
13
anon
12 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.

<?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.
To Top