imap_savebody

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

imap_savebodySpeichert einen Teil des Nachrichtentextes in einer Datei

Beschreibung

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

Speichert einen Teil des Nachrichtenkörpers oder den gesamten Textkörper der angegebenen Nachricht.

Parameter-Liste

imap

Eine von imap_open() zurückgegebene IMAP-Verbindung.

file

Der Name der Zieldatei oder ein gültiger von fopen() zurückgegebener Dateideskriptor.

message_num

Die Nummer der Nachricht

section

Die Nummer des Nachrichtenabschnitts. Ein String aus ganzen Zahlen, getrennt durch Punkte, der einen Teil des Nachrichtentextes gemäß der IMAP4-Spezifikation definiert.

flags

Eine Bitmaske aus einem oder mehrereren der folgenden Werte:

  • FT_UID - message_num ist eine UID
  • FT_PEEK - Das \Seen-Flag nicht setzen, falls es nicht bereits gesetzt ist
  • FT_INTERNAL - Rückgabe im internen Format ohne Umwandlung der Zeilenenden in CRLF.

Rückgabewerte

Gibt bei Erfolg true zurück. Im Fehlerfall wird false zurückgegeben.

Siehe auch

  • imap_fetchbody() - Liefert einen bestimmten Abschnitt aus dem Textkörper einer Nachricht

add a note add a note

User Contributed Notes 4 notes

up
10
anon
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.

<?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.
up
-1
janus at forty-seven dot info
15 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:

<?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($tFileHandle, 4096);

fclose ($tFileHandle);
           
$tFileHandle = fopen($tFile, "w");
//write the new 8Bit string to the file
fwrite($tFileHandle, imap_qprint($tFileOutput));
fclose ($tFileHandle);
?>
up
-4
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.
up
-5
technocraze at gmail dot com
16 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