我正在使用Zend Framework。application.ini中的多個Zend_Mail配置
我需要在application.ini中爲Zend_Mail(使用Zend_Application_Resource_Mail)放置多個郵件配置。是否有可能使用Zend Framework中的標準類來完成此操作,還是需要創建我自己的類?
我正在使用Zend Framework的最新穩定版本。
感謝您的答案
我正在使用Zend Framework。application.ini中的多個Zend_Mail配置
我需要在application.ini中爲Zend_Mail(使用Zend_Application_Resource_Mail)放置多個郵件配置。是否有可能使用Zend Framework中的標準類來完成此操作,還是需要創建我自己的類?
我正在使用Zend Framework的最新穩定版本。
感謝您的答案
它不會似乎是可以設置多個配置爲使用Zend_Mail與Zend_Application_Resource_Mail。
您可以將各種配置添加到application.ini中,但您必須編寫自己的類/函數以使所需的配置處於活動狀態。
Zend_Application_Resource_Mail設置的東西,你將不得不覆蓋的東西是Zend_Mail::setDefaultTransport($newTransport);
,Zend_Mail::setDefaultReplyTo($email);
和Zend_Mail::setDefaultFrom($email);
。
我測試了一些東西,發現了一件容易的事。我們如何mail_config
下設置選項
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]
mail_config.mail_test.defaultFrom.name = "John Doe"
mail_config.mail_test.defaultReplyTo.email = [email protected]
mail_config.mail_test.defaultReplyTo.name = "Jane Doe"
注:
設置你喜歡這個不同配置中的application.ini。這將是一組應用的選項。 mail_test
是一個示例配置。您可以通過設置mail_config.mail_test2
,mail_config.corporate_mail
,或mail_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');
這應該完成你想要用很少的新代碼的東西。