似乎无法使用 Zend_Application_Resource_Mail 为 Zend_Mail 设置多个配置。
您可以将各种配置添加到 application.ini,但您必须编写自己的类/函数才能激活所需的配置。
您必须覆盖的 Zend_Application_Resource_Mail 设置的内容是Zend_Mail::setDefaultTransport($newTransport);
, Zend_Mail::setDefaultReplyTo($email);
, and 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 = [email protected] /cdn-cgi/l/email-protection
mail_config.mail_test.defaultFrom.name = "John Doe"
mail_config.mail_test.defaultReplyTo.email = [email protected] /cdn-cgi/l/email-protection
mail_config.mail_test.defaultReplyTo.name = "Jane Doe"
请注意我们如何在下面设置选项mail_config
。这将是要应用的一组选项。mail_test
是一个示例配置。您可以通过设置拥有多个mail_config.mail_test2
, mail_config.corporate_mail
, or mail_config.production
etc.
接下来,创建一个空类,该类扩展自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');
这应该用很少的新代码来完成你想要的。