gpt4 book ai didi

PHP获取imap附件的文件大小

转载 作者:行者123 更新时间:2023-12-04 13:22:58 24 4
gpt4 key购买 nike

我正在使用 imap PHP 核心功能阅读带有 PHP 的 imap 电子邮件并下载附件。我也通过 imap 协议(protocol)(不是 POP)连接。我希望能够在将附件加载到内存之前知道附件的文件大小,以减少服务器资源使用。

例如,我希望每个附件的大小限制为 5mb,这样我就可以在超过限制的附件消耗任何服务器资源之前将其丢弃。查找电子邮件的大小可能会有所帮助,但问题是我想要限制每个附件,而不是每个电子邮件。

imap_fetchbody() 正在加载附件,一切正常。我可能可以读取该函数结果的大小,但这意味着首先将附件加载到内存中。

谢谢

最佳答案

这个问题已经问了 3 年多了,还没有真正的答案,我很惊讶。

使用 imap_fetchstructure(); 加载电子邮件结构将显示您完成此任务所需的所有信息。在使用 imap_fetchstructure(); 之前,我假设您知道如何获取要查看的特定电子邮件。

无论如何,该函数将返回一个“零件”列表。这些部分属于 IMAP4 规范。结果在一个数组中给出,数组索引之一称为 bytes,表示该部分的字节数。还有一个名为 encoding 的索引,它指示该部分的编码方法。

正如 Paul 所回答的,Base64 编码通常比原始大小大 33%,这应该足以确定附件的原始数据长度。

我相信您可以通过使用 imap_savebody(); 将数据直接写入文件句柄来避免将数据加载到内存的麻烦。功能。您可以通过在调用 imap_savebody(); 之前向该文件句柄添加流过滤器来克服编码问题。这是通过 stream_filter_append(); 实现的功能。

当我有更多时间时,我可能会编辑我的答案并添加一些有效的 PHP 代码。

关于PHP获取imap附件的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8575572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com