application.ini 中的多个 Zend_Mail 配置

Posted

技术标签:

【中文标题】application.ini 中的多个 Zend_Mail 配置【英文标题】:Multiple Zend_Mail configurations in application.ini 【发布时间】:2012-01-06 15:37:15 【问题描述】:

我正在使用 Zend 框架。

我需要在 Zend_Mail 的 application.ini 中放置多个邮件配置(使用 Zend_Application_Resource_Mail)。是否可以使用 Zend Framework 中的标准类来做到这一点,还是我需要创建自己的类?

我正在使用 Zend Framework 的最新稳定版本。

感谢您的回答

【问题讨论】:

【参考方案1】:

似乎无法使用 Zend_Application_Resource_Mail 为 Zend_Mail 设置多个配置。

您可以将各种配置添加到 application.ini,但您必须编写自己的类/函数以激活所需的配置。

您必须覆盖的 Zend_Application_Resource_Mail 设置的内容是 Zend_Mail::setDefaultTransport($newTransport);Zend_Mail::setDefaultReplyTo($email);Zend_Mail::setDefaultFrom($email);

我测试了一些东西,发现了一个你可以做的简单的事情。

在 application.ini 中像这样设置不同的配置:

mail_config.mail_test.transport.type = smtp
mail_config.mail_test.transport.host = "smtp.example.com"
mail_config.mail_test.transport.auth = login
mail_config.mail_test.transport.username = myUsername
mail_config.mail_test.transport.password = myPassword

mail_config.mail_test.defaultFrom.email = john@example.com
mail_config.mail_test.defaultFrom.name = "John Doe"
mail_config.mail_test.defaultReplyTo.email = Jane@example.com
mail_config.mail_test.defaultReplyTo.name = "Jane Doe"

请注意我们如何在mail_config 下设置选项。这将是一组要应用的选项。 mail_test 是一个示例配置。您可以通过设置mail_config.mail_test2mail_config.corporate_mailmail_config.production 等来拥有多个。

接下来,创建一个从Zend_Application_Resource_Mail 扩展的空类。最好是命名和放置它,以便它可以自动加载。

班级:

<?php

class Application_Service_MailSettings extends Zend_Application_Resource_Mail  

现在,这里是如何用其他东西轻松覆盖默认邮件配置。

这个例子假设你在一个控制器中:

    // get the bootstrap, so we can get mail_config options
    $bootstrap = $this->getInvokeArg('bootstrap');
    $options   = $bootstrap->getOption('mail_config');

    // initialize the resource loader with the options from mail_config.mail_test
    $mailSettings = new Application_Service_MailSettings($options['mail_test']);
    $mailSettings->init();  // call init() so the settings are applied

    // now the default transport, from, and reply to are set using mail_config.mail_test options.

    // to use a different set of options, just do
    // $mailSettings = new Application_Service_MailSettings($options['other_config');

这应该可以用很少的新代码完成你想要的。

【讨论】:

以上是关于application.ini 中的多个 Zend_Mail 配置的主要内容,如果未能解决你的问题,请参考以下文章

Zend 框架中的错误报告

zend框架数据库连接无法正常工作

Zend 框架、会话和 HttpOnly

致命错误:在 Zend Framework + Wamp 中找不到类“Memcache”

Zend db 适配器 mysqli 或 PDO_MYSQL

Zend Form - 一页中的多个表单和(CSRF)令牌验证