为了账号安全,请及时绑定邮箱和手机立即绑定

php 计算一封电子邮件中的附件数量

php 计算一封电子邮件中的附件数量

PHP
沧海一幻觉 2021-09-18 11:10:17
我正在使用我的 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';

});


查看完整回答
反对 回复 2021-09-18
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信