PHP Conference Japan 2024

imap_savebody

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

imap_savebody将特定正文部分保存到文件

描述

imap_savebody(
    IMAP\Connection $imap,
    资源|字符串|整数 $file,
    整数 $message_num,
    字符串 $section = "",
    整数 $flags = 0
): 布尔值

保存指定邮件的某一部分或整个正文。

参数

imap

一个IMAP\Connection 实例。

file

保存文件的路径(字符串),或由fopen()返回的有效文件描述符。

message_num

邮件编号

section

部分编号。它是一个由句点分隔的整数字符串,根据IMAP4规范对正文部分列表进行索引。

flags

具有以下一个或多个位的位掩码

  • FT_UID - message_num 是一个UID
  • FT_PEEK - 如果未设置,则不设置\Seen标志
  • FT_INTERNAL - 返回字符串采用内部格式,不会规范化为CRLF。

返回值

成功时返回true,失败时返回false

变更日志

版本 描述
8.1.0 imap 参数现在期望一个 IMAP\Connection 实例;以前,期望的是一个有效的 imap 资源

参见

添加注释

用户贡献的注释 1 个注释

匿名用户
12年前
使用imap_fetchbody()可能会遇到内存使用过多的问题。使用imap_savebody()可以避免这个问题。

但是内容将被编码,换句话说它是无用的。添加过滤器可以在这里提供帮助。

<?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);
?>

注意:要找到合适的过滤器,您需要检查正文结构给出的编码。
To Top