我正在使用我的 PHP 来计算我在一封电子邮件中收到的附件数量的价值。当我尝试这个时:echo count($structure->parts);输出将显示如下:3我在一封电子邮件中有 2 个附件,因此输出返回不正确。所以当我尝试这个时:for($i = 0; $i < count($structure->parts); $i++) { echo $i;}输出返回如下:012这是完整的代码:<?phprequire_once "Mail.php";require_once('Mail/IMAPv2.php');$username = 'myusername';$password = 'mypassword';$mailserver = '{imap.domain.com:993/imap/ssl/novalidate-cert}INBOX';$mailbox = imap_open($mailserver, $username, $password) or die("Can't connect: " . imap_last_error());$key = "mykey";$email_number = openssl_decrypt(hex2bin('274'),'AES-128-CBC', $key);$attach_id = $_GET['attid'];/* get information specific to this email */$overview = imap_fetch_overview($mailbox, $email_number, 0);$message = imap_fetchbody($mailbox, $email_number, 2);/* get mail structure */$structure = imap_fetchstructure($mailbox, $email_number);$attachments = array();for($i = 0; $i < count($structure->parts); $i++) { echo $i;}?>我在一封电子邮件中有 2 个附件,因此返回输出应显示 2 不显示3或012仍显示 3。我试图在谷歌上找到答案,如何使用 imap 计算单个电子邮件中附件的值,但我我无法这样做。你能告诉我一个例子,我如何计算我在一封电子邮件中收到的附件数量吗?
1 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
请仔细看看内容$structure->parts。您有一个由 3 个部分组成的数组,其中最后两个包含以下属性:
[ifdisposition] => 1
[disposition] => attachment
由于第一部分包含[ifdisposition] => 0并且该[disposition]属性不存在,我们可以推断这ifdisposition是一个布尔值,它告诉您是否disposition可用。我们可以通过检查PHP 文档imap_fetchstructure()来验证这一点。
要查找所有附件,您应该遍历各个部分并匹配 whereifdisposition === true和 的所有情况disposition === 'attachment'。如果您想快速提取所有这些,您可以执行以下操作:
$attachments = array_filter($structure->parts, function($part) {
return $part->ifdisposition && $part->disposition === 'attachment';
});
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消