在Symfony 1.4中配置邮件程序 - 如何在管理面板中,而不是在factory.yml?

时间:2012-04-16 09:03:34

标签: php symfony1 symfony-1.4

如何在Symfony的管理面板中配置电子邮件? 默认我必须在文件factories.yml中设置它:

mailer:
  class: sfMailer
  param:
    logging:           %SF_LOGGING_ENABLED%
    charset:           %SF_CHARSET%
    delivery_strategy: realtime
    transport:
      class: Swift_SmtpTransport
      param:
        host:       localhost
        port:       25
        encryption: ~
        username:   ~
        password:   ~

我想在管理面板中设置主机,端口,加密,用户名和密码,并将其保存在我的数据库中。那么如果我发送邮件,怎样才能从数据库中获取这些数据呢?

    $message = $this->getMailer()->compose(
      array('jobeet@example.com' => 'Jobeet Bot'),
      $affiliate->getEmail(),
      'Jobeet affiliate token',
      <<<EOF
Your Jobeet affiliate account has been activated.

Your token is {$affiliate->getToken()}.

The Jobeet Bot.
EOF
    );

    $this->getMailer()->send($message);

我可以从数据库中获取此数据:)但我不知道如何写入getMailer()。

1 个答案:

答案 0 :(得分:4)

有一个事件被解雇when the mailer is configured

$dispatcher->notify(new sfEvent($this, 'mailer.configure'));

所以你可以对这个事件add a listener,检索邮件程序对象,并重新配置它。

或者,如此片段中所述,您可以手动构建对邮件程序的调用并定义如何设置配置(并且在任务中使用getMailer的优势):http://snippets.symfony-project.org/snippet/377