Правильный способ получения почты по IMAP в symfony2 - PullRequest
19 голосов
/ 07 февраля 2012

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

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

public function indexAction($name)
{
    $user = 'adress@gmail.com';
    $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?

Ответы [ 2 ]

19 голосов
/ 07 февраля 2012

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

public function indexAction($name)
{
    $user = 'adress@gmail.com';
    $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 голосов
/ 02 августа 2016

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...