knyk/mailbox-bundle

PhpImap\Mailbox Symfony集成。

安装数: 1,473

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

公开问题: 0

类型:symfony-bundle

2.0.0 2021-03-21 13:24 UTC

This package is auto-updated.

Last update: 2024-09-21 22:05:05 UTC


README

为Symfony 3.x, 4.x和5.x提供的简单php-imap集成。

安装

1. Composer

从命令行运行

$ composer require knyk/mailbox-bundle

如果你使用Symfony Flex,你已经完成并可以转到配置部分;否则,你必须手动注册此扩展包。

2. 注册扩展包

如果你不使用Symfony Flex,你必须手动在你的AppKernel中注册此扩展包,通过添加扩展包声明。

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            ...
            new Knyk\MailboxBundle\MailboxBundle(),
        ];

        ...
    }
}

配置

设置你的邮箱配置。如果你使用的是不带Symfony Flex的symfony 3.x,请在app/config/config.yml中添加你的配置。如果你使用Symfony Flex,请打开config/packages/knyk_mailbox.yaml并调整其内容。

以下是一个示例配置

mailbox:
    connections:
        example_connection:
            mailbox: "{localhost:993/imap/ssl/novalidate-cert}INBOX"
            username: "email@example.com"
            password: "password"

        another_connection:
            mailbox: "{localhost:143}INBOX"
            username: "username"
            password: "password"
            attachments_dir: "%kernel.root_dir%/../var/imap/attachments"
            server_encoding: "UTF-8"

用法

连接

你的配置中的所有连接将通过注入服务的方式获得访问权限,如下所示

App\YourService:
  arguments:
    $mailbox: '@knyk.mailbox.connection.example_connection'

自动注入

在你的控制器中

<?php

namespace App\Controller;

use Knyk\MailboxBundle\Factory\MailboxFactory;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class IndexController extends AbstractController
{
    public function indexAction(MailboxFactory $mailboxFactory)
    {
        $exampleConnection = $mailboxFactory->create('example_connection');
        $anotherConnection = $mailboxFactory->create('another_connection');

        ...
    }

    ...
}

使用服务容器

在你的控制器中

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class IndexController extends Controller
{
    public function indexAction()
    {
        $exampleConnection = $this->get('Knyk\MailboxBundle\Factory\MailboxFactory')->create('example_connection');
        $anotherConnection = $this->get('Knyk\MailboxBundle\Factory\MailboxFactory')->create('another_connection');

        ...
    }

    ...
}

从这一点开始,你可以使用由php-imap库提供的任何方法。例如

$exampleConnection = $this->get('Knyk\MailboxBundle\Factory\MailboxFactory')->create('example_connection');
$exampleConnection->getMailboxInfo();

测试

可以通过运行PHPUnit和phpspec测试来测试扩展包。

php vendor/bin/phpspec run - 运行phpspec

php vendor/bin/phpunit tests/ - 运行phpunit