Несколько конфигураций Zend_Mail в application.ini - PullRequest
3 голосов
/ 26 ноября 2011

Я использую Zend Framework.

Мне нужно поместить несколько конфигураций почты в application.ini для Zend_Mail (используя Zend_Application_Resource_Mail). Можно ли сделать это с помощью стандартных классов в Zend Framework или мне нужно создать свой собственный класс?

Я использую последнюю стабильную версию Zend Framework.

Спасибо за ответы

1 Ответ

3 голосов
/ 26 ноября 2011

Не представляется возможным установить несколько конфигураций для 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 = 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_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');

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

...