2012-02-07 11 views
18

Devo sviluppare un semplice client di posta in symfony2 usando IMAP. Mi chiedo quale sia il modo migliore per recuperare i messaggi dal server (lascia prendere un gmail come esempio)?Modo corretto per recuperare mail da IMAP in symfony2

ho fatto qualcosa di simile:

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

è in questo modo giusto, o no? Funziona, ma è compatibile con gli "standard" di symfony?

risposta

19

Questo non ha nulla a che fare con gli "standard" di symfony. Ma si può rendere il codice più OOP, se ci si sposta tutti login ad una classe di servizio e l'utilizzo di symfony DepencyInjection per creare e ottenere il vostro servizio:

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

dichiarazione Classe:

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

servizio declartion:

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

È inoltre possibile utilizzare this Symfony bundle per questo e utilizzarlo come servizio. Sono progettato per il vecchio Symfony2 ma l'ho testato con Symfony 3 e funziona :)

Problemi correlati