medeirosrafael/laravel-imap

Laravel IMAP 客户端(分支版)

1.0.2.10 2017-06-07 16:37 UTC

This package is auto-updated.

Last update: 2024-09-19 23:35:25 UTC


README

Latest Version on Packagist Software License Build Status Total Downloads

安装

通过 Composer

$ composer require webklex/laravel-imap

设置

将服务提供者添加到 config/app.php 中的 providers 数组。

'providers' => [
    Webklex\IMAP\Providers\LaravelServiceProvider::class,
];

如果您打算使用单个账户,您可能需要将以下内容添加到您的 .env 文件中。

IMAP_HOST=somehost.com
IMAP_PORT=993
IMAP_ENCRYPTION=ssl
IMAP_VALIDATE_CERT=true
IMAP_USERNAME=root@example.com
IMAP_PASSWORD=secret

以下加密方法被支持

false   - Disable encryption 
ssl     - Use SSL
tls     - Use TLS

发布

您可以一次性发布所有内容

php artisan vendor:publish --provider="Webklex\IMAP\Providers\LaravelServiceProvider"

通过其 Facade \Webklex\IMAP\Facades\Client 访问 IMAP 客户端。因此,您可能需要在 config/app.php 文件中的 aliases 数组中添加一个别名。

'aliases' => [
    'Client' => Webklex\IMAP\Facades\Client::class
];

用法

这个库旨在更轻松地处理原生 PHP IMAP 函数,并能够将此软件包集成到您当前的 Laravel 安装中。

以下是一个基本示例,它将输出所有 imap 文件夹中的所有邮件,并将每条消息移动到 INBOX.read。请注意,这不应该在实际环境中测试,但它可以给人一个关于事物如何工作的印象。

use Webklex\IMAP\Client;

$oClient = new Client([
    'host'          => 'somehost.com',
    'port'          => 993,
    'encryption'    => 'ssl',
    'validate_cert' => true,
    'username'      => 'username',
    'password'      => 'password',
]);

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

//Get all Mailboxes
$aMailboxes = $oClient->getFolders();

//Loop through every Mailbox
/** @var \Webklex\IMAP\Folder $oMailbox */
foreach($aMailboxes as $oMailbox){

    //Get all Messages of the current Mailbox
    /** @var \Webklex\IMAP\Message $oMessage */
    foreach($oMailbox->getMessages() as $oMessage){
        echo $oMessage->subject.'<br />';
        echo 'Attachments: '.$oMessage->getAttachments()->count().'<br />';
        echo $oMessage->getHTMLBody(true);
        
        //Move the current Message to 'INBOX.read'
        if($oMessage->moveToFolder('INBOX.read') == true){
            echo 'Message has ben moved';
        }else{
            echo 'Message could not be moved';
        }
    }
}

如果您使用 Facade \Webklex\IMAP\Facades\Client,请先选择一个账户

use Webklex\IMAP\Facades\Client;

$oClient = Webklex\IMAP\Facades\Client::account('default');
$oClient->connect();

您可以在 config/imap.php 文件中定义您的账户

'accounts' => [ 
    'default' => [
        'host'  => env('IMAP_HOST', 'localhost'),
        'port'  => env('IMAP_PORT', 993),
        'encryption'    => env('IMAP_ENCRYPTION', 'ssl'),
        'validate_cert' => env('IMAP_VALIDATE_CERT', true),
        'username' => env('IMAP_USERNAME', 'root@example.com'),
        'password' => env('IMAP_PASSWORD', ''),
    ], 
    'gmail' => [.. ]
]

文档

\Webklex\IMAP\Client

\Webklex\IMAP\Message

\Webklex\IMAP\Folder

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

测试

$ composer test

安全

如果您发现任何安全相关的问题,请发送电子邮件到 github@webklex.com,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件