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