2012-02-07 13 views
18

Tengo que desarrollar un cliente de correo simple en Symfony2 usando IMAP. Me pregunto cuál es la mejor manera de recuperar mensajes del servidor (vamos a tomar un gmail como ejemplo)?Forma correcta de recuperar correos por IMAP en symfony2

he hecho algo como esto:

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)); 
} 

es esta manera correcta, o no? Funciona, pero ¿es compatible con los "estándares" de Symfony?

Respuesta

19

Esto no tiene nada que ver con los "estándares" de Symfony. Pero se puede hacer que su código sea más POO si se mueve todo el inicio de sesión a una clase de servicio y el uso de Symfony DepencyInjection para crear y obtener su servicio:

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)); 
} 

Declaración de clase:

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

Declartion servicio:

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

También puede usar this Symfony bundle para eso y usarlo como un servicio. I está diseñado para el viejo Symfony2 pero lo probé con Symfony 3 y funciona :)

Cuestiones relacionadas