imap_savebody

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

imap_savebodyBelirtilen iletinin gövdesini bir dosyaya kaydeder

Açıklama

imap_savebody(
    IMAP\Connection $imap,
    resource|string|int $dosya,
    int $ileti_num,
    string $parçanum = "",
    int $seçenekler = 0
): bool

Belirtilen ileti gövdesinin belirtilen parçasını bir dosyaya kaydeder.

Değiştirgeler

imap

IMAP\Connection nesnesi.

dosya

Bir dizge olarak ileti parçasının kaydedileceği dosyanın yolu veya fopen() tarafından döndürülmüş geçerli bir dosya tanıtıcısı.

ileti_num

İleti numarası.

parçanum

Parça numarası. IMAP4 belirtimine uygun olarak bir gövde parça listesi içindeki indisleri nokta ile ayrılmış tamsayılar biçeminde içeren bir dizge.

seçenekler

Şunlardan gerekenleri içeren bir bit maskesidir:

  • FT_UID - ileti_num bir eşsiz kimliktir.
  • FT_PEEK - \Seen imi tanımlıysa bir daha tanımlanmaz.
  • FT_INTERNAL - CRLF ile meşrulaştırılmamış olarak dizgeyi dahili biçemde döndürür.

Dönen Değerler

Başarı durumunda true, başarısızlık durumunda false döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.1.0 imap değiştirgesi artık IMAP\Connection nesnesi kabul ediyor, evvelce bir imap özkaynağı kabul ederdi.

Ayrıca Bakınız

  • imap_fetchbody() - Belirtilen iletinin belli bir gövde bölümünü döndürür

add a note add a note

User Contributed Notes 4 notes

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