imap_savebody

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

imap_savebody — Save a specific body section to a file

说明

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

Saves a part or the whole body of the specified message.

参数

imap

IMAP\Connection 实例。

file

The path to the saved file as a string, or a valid file descriptor returned by fopen().

message_num

The message number

section

The part number. It is a string of integers delimited by period which index into a body part list as per the IMAP4 specification

flags

A bitmask with one or more of the following:

  • FT_UID - The message_num is a UID

  • FT_PEEK - Do not set the \Seen flag if not already set

  • FT_INTERNAL - The return string is in internal format, will not canonicalize to CRLF.

返回值

成功时返回 true, 或者在失败时返回 false。

更新日志

版本 说明
8.1.0 现在 imap 参数接受 IMAP\Connection 实例,之前接受有效的 imap resource。

参见

+添加备注

用户贡献的备注 1 note

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