Правильный способ получения писем через 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?
Ответы
Ответ 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 и работает:)