Подтвердить что ты не робот

Правильный способ получения писем через IMAP в symfony2

Мне нужно создать простой почтовый клиент в symfony2 с помощью IMAP. Im интересно, что лучший способ получить сообщения с сервера (позволяет взять пример gmail)?

Я сделал что-то вроде этого:

public function indexAction($name)
{
    $user = '[email protected]';
    $password = 'password';
    $mailbox = "{imap.gmail.com:993/imap/ssl}INBOX";
    $mbx = imap_open($mailbox , $user , $password);
    $ck = imap_check($mbx);
    $mails = imap_fetch_overview($mbx,"1:5");
    return $this->render('HtstMailBundle:Mail:index.html.twig',array('name'=>$name,'mail'=>$mails));
}

Это правильный путь или нет? Он работает, но совместим ли он с "стандартами" Symfony?

4b9b3361

Ответ 1

Это не имеет никакого отношения к "стандартам" Symfony. Но вы можете сделать свой код более ООП, если вы переместите весь вход в класс обслуживания и используйте symfony DepencyInjection для создания и получения вашей услуги:

public function indexAction($name)
{
    $user = '[email protected]';
    $password = 'password';
    $mailbox = "{imap.gmail.com:993/imap/ssl}INBOX";
    $mails = $this->get("mail.checker")->receive($user, $password, $mailbox);
    return $this->render('HtstMailBundle:Mail:index.html.twig',array('name'=>$name,'mail'=>$mails));
}

Объявление класса:

class MailChecker
{
    public function receive($user, $password, $mailbox)
    {
        ...imap_check()...
    }
}

объявление сервиса:

services:
    mail.checker:
        class: Project\YourBundle\Service\MailChecker

Ответ 2

Вы также можете использовать этот комплект Symfony для этого и использовать его как услугу. я предназначен для старого Symfony2, но тестировал его с помощью Symfony 3 и работает:)