stevebauman / php-imap
PHP IMAP客户端
Requires
- php: ^8.0.2
- ext-fileinfo: *
- ext-iconv: *
- ext-json: *
- ext-libxml: *
- ext-mbstring: *
- ext-openssl: *
- ext-zip: *
- illuminate/pagination: >=5.0.0
- nesbot/carbon: ^2.62.1
- symfony/http-foundation: >=2.8.0
Requires (Dev)
- phpunit/phpunit: ^9.5.10
Suggests
- symfony/mime: Recomended for better extension support
- symfony/var-dumper: Usefull tool for debugging
This package is auto-updated.
Last update: 2024-08-28 14:30:35 UTC
README
描述
PHP-IMAP是一个包装器,用于常见的IMAP通信,无需安装/启用php-imap模块。协议完全集成,因此支持IMAP IDLE操作以及“新”OAuth认证过程。您可以通过启用php-imap
模块来处理边缘情况、提高消息解码质量,如果想要使用像pop3这样的旧协议,则也是必需的。
官方文档:php-imap.com
Laravel包装器:webklex/laravel-imap
Discord:discord.gg/rd4cN9h6
目录
文档
- 旧版本(< v2.0.0):旧版文档
- 核心文档:php-imap.com
兼容性
基本使用示例
这是一个基本示例,它将在所有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'; } } }
赞助商
测试
要运行测试,请执行以下命令
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 request都会被考虑,但也可能会被拒绝。
为了防止不必要的劳动,请考虑创建一个功能问题
首先,如果您打算进行较大的更改。当然,如果您只是想要一个新功能,也可以创建一个新的功能问题 ;)
变更日志
请参阅变更日志获取更多信息,了解最近发生了哪些更改。
安全
如果您发现任何与安全相关的问题,请发送电子邮件至github@webklex.com,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可(MIT)。请参阅许可文件获取更多信息。