在application.ini中配置多个Zend_Mail设置

3

我正在使用Zend Framework。

我需要在application.ini中为Zend_Mail(使用Zend_Application_Resource_Mail)放置多个邮件配置。是否可以使用Zend Framework中的标准类来实现此功能,还是需要创建自己的类?

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

感谢提供答案。

1个回答

4

使用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');

这应该可以用很少的新代码实现你想要的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接