2014-12-14 7 views
0

В настоящее время у меня есть экземпляр производственного и локального развития моего сайта Orchard. Я хочу, чтобы отключенные исходящие сообщения SMTP были отключены во время локального развития. Я знаю, как отключить электронные письма из пользовательского интерфейса администратора, но поскольку я обычно копирую свою базу данных из производства в развитие, чтобы поддерживать актуальность, это означает, что я должен помнить, что нужно отключать каждый раз, когда я копирую свою базу данных.Orchard Disable Smtp Emails

Есть ли способ отключить электронную почту SMTP через один из файлов конфигурации или каким-либо образом, который не управляется базой данных?

ответ

2

Нет готовой конфигурации. Но вы могли бы реализовать свои собственные. Добавьте обработчик событий в свой модуль (некоторый основной модуль вашего сайта). Когда приложение запущено, будет выполнен следующий код.

public class MyHandler : IOrchardShellEvents 
{ 
    private readonly IModuleService _moduleService; 

    public MyHandler(IModuleService moduleService) 
    { 
     _moduleService = moduleService; 
    } 

    public void Activated() { 

     bool isProduction; 
     if (bool.TryParse(ConfigurationManager.AppSettings["IsProduction"], out isProduction)) { 

      var features = _moduleService.GetAvailableFeatures().ToDictionary(m => m.Descriptor.Id, m => m); 

      if (features.ContainsKey("Orchard.Email")) 
      { 
       if (features["Orchard.Email"].IsEnabled && !isProduction) { 
        _moduleService.DisableFeatures(new string[] {"Orchard.Email"}); 
       } 
       else if (!features["Orchard.Email"].IsEnabled && isProduction) 
       { 
        _moduleService.EnableFeatures(new string[] { "Orchard.Email" }); 
       } 
      } 
     } 
    } 

    public void Terminating() {} 
} 

и добавить параметр в файл web.config

<appSettings> 
    <add key="IsProduction" value="true"/> 
</appSettings>