2011-11-25 57 views
3

我正在使用Zend Framework。application.ini中的多個Zend_Mail配置

我需要在application.ini中爲Zend_Mail(使用Zend_Application_Resource_Mail)放置多個郵件配置。是否有可能使用Zend Framework中的標準類來完成此操作,還是需要創建我自己的類?

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

感謝您的答案

回答

3

它不會似乎是可以設置多個配置爲使用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_test2mail_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'); 

這應該完成你想要用很少的新代碼的東西。

相關問題