2012-02-07 17 views
18

Tôi phải phát triển ứng dụng thư khách đơn giản trong symfony2 bằng IMAP. Im tự hỏi cách tốt nhất để lấy thông điệp từ máy chủ (cho phép lấy một gmail làm ví dụ) là gì?Cách đúng để truy xuất thư bằng IMAP trong symfony2

tôi đã làm một cái gì đó như thế này:

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

là đúng cách này, hay không? Nó hoạt động, nhưng nó có tương thích với các "tiêu chuẩn" của symfony không?

Trả lời

19

Điều này không liên quan gì đến "tiêu chuẩn" của symfony. Nhưng bạn có thể làm cho OOP mã của bạn hơn nếu bạn di chuyển tất cả đăng nhập vào một lớp dịch vụ và sử dụng symfony DepencyInjection để tạo ra và nhận được dịch vụ của bạn:

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

khai Class:

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

dịch vụ declartion:

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

Bạn cũng có thể sử dụng this Symfony bundle cho điều đó và sử dụng làm dịch vụ. Tôi được thiết kế cho Symfony2 cũ nhưng đã thử nghiệm nó với Symfony 3 và hoạt động :)

Các vấn đề liên quan