【问题标题】:Correct way to retrieve mails by IMAP in symfony2在 symfony2 中通过 IMAP 检索邮件的正确方法
【发布时间】:2012-02-29 05:47:44
【问题描述】:

我必须使用 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 的“标准”兼容?

【问题讨论】:

    标签: symfony imap


    【解决方案1】:

    这与 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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-09-16
        • 1970-01-01
        • 1970-01-01
        • 2017-11-10
        • 2013-04-14
        • 2019-03-01
        • 1970-01-01
        • 2018-07-12
        • 1970-01-01
        相关资源
        最近更新 更多