webklex/php-imap

PHP IMAP 客户端

5.5.0 2023-06-28 01:57 UTC

README

Latest release on Packagist Latest prerelease on Packagist Software License Total Downloads Hits Discord Snyk

描述

PHP-IMAP 是一个封装了常见 IMAP 通信的包装器,无需安装/启用 php-imap 模块。该协议完全集成,因此支持 IMAP IDLE 操作和“新”OAuth 认证过程。您可以通过启用 php-imap 模块来处理边缘情况,提高消息解码质量,并且如果您想使用如 pop3 这样的旧协议,则必须使用该模块。

官方文档: php-imap.com

Laravel 包装器: webklex/laravel-imap

Discord: discord.gg/rd4cN9h6

目录

文档

兼容性

基本用法示例

这是一个基本示例,它将在所有 imap 文件夹中回显所有邮件,并将每条消息移至 INBOX.read。请注意,这不应在实际生活中测试,只是用来展示事物是如何工作的。

use Webklex\PHPIMAP\ClientManager;

require_once "vendor/autoload.php";

$cm = new ClientManager('path/to/config/imap.php');

/** @var \Webklex\PHPIMAP\Client $client */
$client = $cm->account('account_identifier');

//Connect to the IMAP Server
$client->connect();

//Get all Mailboxes
/** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */
$folders = $client->getFolders();

//Loop through every Mailbox
/** @var \Webklex\PHPIMAP\Folder $folder */
foreach($folders as $folder){

    //Get all Messages of the current Mailbox $folder
    /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */
    $messages = $folder->messages()->all()->get();
    
    /** @var \Webklex\PHPIMAP\Message $message */
    foreach($messages as $message){
        echo $message->getSubject().'<br />';
        echo 'Attachments: '.$message->getAttachments()->count().'<br />';
        echo $message->getHTMLBody();
        
        //Move the current Message to 'INBOX.read'
        if($message->move('INBOX.read') == true){
            echo 'Message has been moved';
        }else{
            echo 'Message could not be moved';
        }
    }
}

赞助商

elb-BIT Feline

测试

要运行测试,请执行以下命令

composer test

快速测试 / 静态测试

要禁用所有需要实时邮箱的测试,请将 phpunit.xml.dist 复制到 phpunit.xml 并调整配置

<php>
    <env name="LIVE_MAILBOX" value="false"/>
</php>

完整测试 / 实时邮箱测试

要运行所有测试,您需要提供有效的 imap 配置。

要提供有效的 imap 配置,请将 phpunit.xml.dist 复制到 phpunit.xml 并调整配置

<php>
    <env name="LIVE_MAILBOX" value="true"/>
    <env name="LIVE_MAILBOX_DEBUG" value="true"/>
    <env name="LIVE_MAILBOX_HOST" value="mail.example.local"/>
    <env name="LIVE_MAILBOX_PORT" value="993"/>
    <env name="LIVE_MAILBOX_VALIDATE_CERT" value="false"/>
    <env name="LIVE_MAILBOX_QUOTA_SUPPORT" value="true"/>
    <env name="LIVE_MAILBOX_ENCRYPTION" value="ssl"/>
    <env name="LIVE_MAILBOX_USERNAME" value="root@example.local"/>
    <env name="LIVE_MAILBOX_PASSWORD" value="foobar"/>
</php>

测试账户不应包含任何重要数据,因为它将在测试过程中被删除。此外,测试账户应能够创建新文件夹、移动消息,并且在测试期间不应被任何其他应用程序使用。

建议为此目的使用专门的测试账户。您可以使用提供的 Dockerfile 创建用于测试目的的 imap 服务器。

构建 docker 镜像

cd .github/docker

docker build -t php-imap-server .

运行 docker 镜像

docker run --name imap-server -p 993:993 --rm -d php-imap-server

停止 docker 镜像

docker stop imap-server

已知问题

支持

如果您遇到任何问题或发现错误,请毫不犹豫地创建一个新的 问题。但是,请注意,回答可能需要一些时间。与主题无关、无礼或攻击性的问题将被无通知删除。

如果您需要 商业 支持,请随时通过 github@webklex.com 发送邮件。

注意事项

如果您在问题中编写源代码,请考虑正确格式化它。这会使阅读变得更容易,并且人们更有可能评论并帮助:)

```php

echo 'your php code...';

```

将转换为

echo 'your php code...'; 

功能 & pull 请求

每个人都可以为此项目做出贡献。每个 pull 请求都将被考虑,但也可能会被拒绝。
为了防止不必要的劳动,请考虑创建一个功能问题
首先,如果你计划进行较大的改动。当然,如果你只是希望添加一个功能,也可以创建一个功能问题 ;)

变更日志

请查看变更日志,了解最近有哪些更改。

安全

如果你发现任何与安全相关的问题,请通过电子邮件github@webklex.com联系,而不是使用问题跟踪器。

致谢

许可

MIT许可证(MIT)。请查看许可文件以获取更多信息。