PHP类,用于访问IMAP邮箱。特别使用Laminas库而不是IMAP扩展。

2.2.0 2022-03-30 21:47 UTC

README

Pb\Imap是一个用于下载和解析IMAP电子邮件消息的库。出于性能原因,特别没有使用PHP IMAP扩展,而是使用Laminas Mail库。

使用了Laminas Mail和Laminas Mime库的独立分支,并尽可能地保持最新。这些分支是为了进行一些虽小但必要的更新,这些更新可能无法及时或在任何时候获得Laminas维护者的批准。

内存性能是这个库的目标,它已经尽可能稳定和减少。根据文件附件下载,这个应用程序平均使用10-20MB的内存,在大型附件下载期间峰值可达75-100MB。

特性

  • 通过IMAP连接到邮箱
  • 获取所有文件夹的列表
  • 下载电子邮件消息并将附件保存到磁盘
  • 根据自定义标准搜索电子邮件
  • 获取每个文件夹的状态信息

使用Composer安装

{
  "require": {
    "particlebits/imap": "^2.1"
  }
}

$> composer require particlebits/imap ^2.1

使用示例

$mailbox = new \Pb\Imap\Mailbox(
    'imap.gmail.com',
    'something@gmail.com',
    '**********',
    'INBOX',
    __DIR__ .'/attachments',
    [
        \Pb\Imap\Mailbox::OPT_DEBUG_MODE => true
    ]);
$messageIds = $mailbox->searchMailBox('ALL');

foreach ($messageIds as $messageId) {
    $message = $mailbox->getMessage($messageId);
    print_r($message);
    print_r($message->getAttachments());
}

可用选项

您可以在Mailbox构造函数的最后一个参数中使用以下选项

  • OPT_DEBUG_MODE 这将把内存信息写入屏幕
  • OPT_SKIP_ATTACHMENTS 跳过下载消息附件。对于节省磁盘空间很有用。

注意

该项目最初使用PHP IMAP扩展来获取和解析电子邮件消息。对于长时间运行的过程,该扩展不是非常节省内存,这是我预期的用途。相反,这个库使用了Laminas Mail包。Laminas Mail通过套接字连接检索消息并解析头部。\Pb\Imap将这个原始消息对象转换为更用户友好的格式。

更多示例请参阅tests/文件夹中的脚本。