sgoranov/imap-client

此包已被放弃,不再维护。未建议替代包。

面向对象的PHP IMAP

0.8 2016-08-29 09:12 UTC

This package is not auto-updated.

Last update: 2018-02-16 14:11:03 UTC


README

Build Status

PHP 5.6+ 库,用于通过IMAP读取和处理电子邮件。

安装

确保已安装 PHP IMAP 扩展。例如,在Ubuntu上

# apt-get install php7.0-imap

安装IMAP库的推荐方法是使用 Composer

$ composer require sgoranov/imap-client

此命令要求您全局安装Composer,如Composer文档的安装章节中所述。

用法

连接和认证

use sgoranov\ImapClient\Server;

$server = new Server('imap.gmail.com');

// $connection is instance of \sgoranov\ImapClient\Connection
$connection = $server->authenticate('my_username', 'my_password');

选项

您可以为服务器指定端口号、标志和参数

$server = new Server(
    $hostname, // required
    $port,     // defaults to 993
    $flags,    // defaults to '/imap/ssl/validate-cert'
    $parameters
);

邮箱

从邮件服务器检索邮箱(也称为邮件文件夹)并遍历它们

$mailboxes = $connection->getMailboxes();

foreach ($mailboxes as $mailbox) {
    // $mailbox is instance of \sgoranov\ImapClient\Mailbox
    printf('Mailbox %s has %s messages', $mailbox->getName(), $mailbox->count());
}

或检索特定的邮箱

$mailbox = $connection->getMailbox('INBOX');

删除邮箱

$mailbox->delete();

邮件

从邮箱中检索邮件(电子邮件)并遍历它们

$messages = $mailbox->getMessages();

foreach ($messages as $message) {
    // $message is instance of \sgoranov\ImapClient\Message
}

搜索邮件

use sgoranov\ImapClient\SearchExpression;
use sgoranov\ImapClient\Search\Email\To;
use sgoranov\ImapClient\Search\Text\Body;

$search = new SearchExpression();
$search->addCondition(new To('me@here.com'))
    ->addCondition(new Body('contents'))
;

$messages = $mailbox->getMessages($search);

排序邮件

搜索并排序结果

use sgoranov\ImapClient\SearchExpression;
use sgoranov\ImapClient\Search\Email\To;
use sgoranov\ImapClient\Search\Text\Body;
use sgoranov\ImapClient\Sort\Size;

$search = new SearchExpression();
$search->addCondition(new To('me@here.com'))
    ->addCondition(new Body('contents'))
;

$messages = $mailbox->getMessages($search, new Size('DESC')); // sort by size

对邮箱中的所有邮件进行排序

use sgoranov\ImapClient\Sort\Date;

$messages = $mailbox->getMessages(null, new Date()); // sort by date ASC

邮件属性和操作

获取邮件编号和唯一的 邮件ID,形式为 <...>

$message->getNumber();
$message->getId();

获取其他邮件属性

$message->getSubject();
$message->getFrom();
$message->getTo();
$message->getDate();
$message->isAnswered();
$message->isDeleted();
$message->isDraft();
$message->isSeen();

获取邮件头作为 \sgoranov\ImapClient\Message\Headers 对象

$message->getHeaders();

获取邮件正文作为HTML或纯文本

$message->getBodyHtml();
$message->getBodyText();

读取邮件正文将邮件标记为已读。如果您想保持邮件未读

$message->keepUnseen()->getBodyHtml();

将邮件移动到另一个邮箱

$mailbox = $connection->getMailbox('another-mailbox');
$message->move($mailbox);

删除邮件

$mailbox->getMessage(1)->delete();
$mailbox->getMessage(2)->delete();
$mailbox->expunge();

邮件附件

获取邮件附件(包括内联和附件)并遍历它们

$attachments = $message->getAttachments();

foreach ($attachments as $attachment) {
    // $attachment is instance of \sgoranov\ImapClient\Message\Attachment
}

将邮件附件下载到本地文件

// getDecodedContent() decodes the attachment’s contents automatically:
file_put_contents(
    '/my/local/dir/' . $attachment->getFilename(),
    $attachment->getDecodedContent()
);

运行测试

此库在Gmail IMAP服务器上通过Travis CI进行了功能测试。

如果您有自己的IMAP(测试)账户,您可以通过提供您的IMAP(例如,Gmail)凭据在本地运行测试

$ composer install
$ export EMAIL_USERNAME="your_username" 
$ export EMAIL_PASSWORD="your_password" 
$ vendor/bin/phpunit

您还可以设置一个 EMAIL_SERVER 变量,默认为 imap.gmail.com

$ export EMAIL_SERVER="imap.you.com"