israelfl/imap-client

简单但功能强大的IMAP客户端。

安装: 64

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 138

类型:php-class

0.0.10 2019-03-04 07:27 UTC

This package is auto-updated.

Last update: 2024-09-04 19:43:38 UTC


README

版权 (c) 2016 Tobias Zeising, tobias.zeising@aditu.de
http://www.aditu.de
在MIT许可下发布

功能

这个PHP IMAP客户端是一个用于IMAP电子邮件访问的简单类。它基于PHP IMAP扩展,并提供了一个简单的界面来处理电子邮件。在我看来,PHP IMAP函数并不非常直观。

  • 简单界面
  • 获取电子邮件和文件夹
  • 移动、删除、计数电子邮件
  • 重命名、删除和添加文件夹
  • 获取附件

如何使用

实例化该类将打开IMAP连接。

$mailbox = 'my.imapserver.com';
$username = 'myuser';
$password = 'secret';
$encryption = 'tls'; // or ssl or '';
$imap = new Imap($mailbox, $username, $password, $encryption);

if($imap->isConnected()===false) {
    die($imap->getError());
}

现在你可以获取所有可用的文件夹

$folders = $imap->getFolders(); // returns array of strings
foreach($folders as $folder) {
    echo $folder;
}

现在你可以选择一个文件夹

$imap->selectFolder("Inbox");

一旦选择了文件夹,你就可以计数这个文件夹中的消息

$overallMessages = $imap->countMessages();
$unreadMessages = $imap->countUnreadMessages();

好的,现在让我们获取当前选中文件夹(在我们的例子中是“收件箱”)中的所有电子邮件

$emails = $imap->getMessages();
var_dump($emails);

getMessages() 不会标记电子邮件为已读!它将返回以下结构而不会更改电子邮件。在这个例子中,收件箱中有两封电子邮件。

array(2) {
  [0]=>
  array(8) {
    ["to"]=>
    array(1) {
      [0]=>
      string(30) "Tobias Zeising <tobias.zeising@aditu.de>"
    }
    ["from"]=>
    string(30) "Karl Mustermann <karl.mustermann@aditu.de>"
    ["date"]=>
    string(31) "Fri, 27 Dec 2013 18:44:52 +0100"
    ["subject"]=>
    string(12) "Test Subject"
    ["id"]=>
    int(15)
    ["unread"]=>
    bool(true)
    ["answered"]=>
    bool(false)
    ["body"]=>
    string(240) "<p>This is a test body.</p>

    <p>With a bit <em><u>html</u></em>.</p>

    <p>and without <span style="color:#008000"><span style="font-size:14px"><span style="font-family:arial,helvetica,sans-serif">attachment</span></span></span></p>
    "
  }
  [1]=>
  array(9) {
    ["to"]=>
    array(1) {
      [0]=>
      string(29) "tobias.zeising@aditu.de <tobias.zeising@aditu.de>"
    }
    ["from"]=>
    string(40) "Karl Ruediger <karl.ruediger@aditu.de>"
    ["date"]=>
    string(31) "Thu, 19 Dec 2013 17:45:37 +0100"
    ["subject"]=>
    string(19) "Test mit Attachment"
    ["id"]=>
    int(14)
    ["unread"]=>
    bool(false)
    ["answered"]=>
    bool(false)
    ["body"]=>
    string(18) "Anbei eine Datei"
    ["attachments"]=>
    array(1) {
      [0]=>
      array(2) {
        ["name"]=>
        string(24) "640 x 960 (iPhone 4).jpg"
        ["size"]=>
        int(571284)
      }
    }
  }
}

你还可以添加/重命名/删除文件夹。让我们添加一个新的文件夹

$imap->addFolder('archive');

现在我们将第一封电子邮件移动到这个文件夹

$imap->moveMessage($emails[0]['id'], 'archive');

然后我们从收件箱中删除第二封电子邮件

$imap->deleteMessage($emails[1]['id']);

方法

以下方法可用。

  • __construct($mailbox, $username, $password, $encryption) 打开新的IMAP连接
  • isConnected() 检查IMAP连接是否成功打开
  • getError() 返回最后一个错误消息
  • selectFolder($folder) 选择当前文件夹
  • getFolders() 获取所有可用的文件夹
  • setEmbed($val) 如果为true,则将所有'inline'图像嵌入到正文HTML中,在'body_embed'中可访问
  • countMessages() 计算当前文件夹中的消息数量
  • countUnreadMessages() 计算当前文件夹中的未读消息数量
  • getMessages($withbody = true) 获取当前文件夹中的电子邮件
  • getMessage($id, $withbody = true) 通过给定的id获取电子邮件
  • deleteMessage($id) 删除具有给定id的消息
  • deleteMessages($ids) 删除具有给定id的消息(作为数组)
  • moveMessage($id, $target) 将具有给定id的消息移动到新文件夹
  • moveMessages($ids, $target) 将具有给定id的消息(作为数组)移动到新文件夹
  • setUnseenMessage($id, $seen = true) 设置具有给定id的消息的未读状态
  • getAttachment($id, $index = 0) 获取具有给定id的消息的附件(getMessages返回所有可用的附件)
  • addFolder($name) 添加具有给定名称的新文件夹
  • removeFolder($name) 删除具有给定名称的文件夹
  • renameFolder($name, $newname) 重命名具有给定名称的文件夹
  • purge() 将当前文件夹中的所有电子邮件移动到垃圾箱。垃圾箱和垃圾邮件中的电子邮件将被删除
  • getAllEmailAddresses() 返回所有电子邮件的电子邮件地址(用于自动建议列表)
  • saveMessageInSent($header, $body) 将已发送的消息保存到已发送文件夹
  • getMailboxStatistics() 返回统计信息,请参阅imap_mailboxmsginfo

反馈

欢迎改进此类。您可以使用github的pull request功能来贡献改进。这个类的内部结构简单易懂。不要犹豫,查看它吧 ;)