在symfony2中通过IMAP检索邮件的正确方法

时间:2012-02-07 19:13:19

标签: symfony imap

我必须使用IMAP在symfony2中开发简单的邮件客户端。我想知道从服务器检索消息的最佳方法是什么(让我们以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 个答案:

答案 0 :(得分:19)

这与symfony“标准”无关。但是,如果您将所有登录信息移至服务类并使用symfony DepencyInjection创建并获取服务,则可以使代码更加OOP:

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

答案 1 :(得分:2)

您也可以使用this Symfony bundle并将其用作服务。我是为旧的Symfony2而设计的,但是使用Symfony 3进行测试并且可以工作:)