israelfl / imap-client
简单但功能强大的IMAP客户端。
0.0.10
2019-03-04 07:27 UTC
Requires
- php: >=5.3
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功能来贡献改进。这个类的内部结构简单易懂。不要犹豫,查看它吧 ;)