2011-11-25 1 views
3

Я использую Zend Framework.Несколько конфигураций Zend_Mail в application.ini

Мне нужно добавить несколько почтовых конфигураций в 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);.

Я проверил что-то и нашел легкую вещь, которую вы можете сделать.

Настройте свои различные конфигурации, как это в 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] 
mail_config.mail_test.defaultFrom.name = "John Doe" 
mail_config.mail_test.defaultReplyTo.email = [email protected] 
mail_config.mail_test.defaultReplyTo.name = "Jane Doe" 

Обратите внимание, как мы создаем варианты под mail_config. Это будет набор возможных вариантов. 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'); 

Это должно сделать то, что вы хотите с очень небольшим количеством нового кода.