2014-12-14 1 views
0

현재 Orchard 사이트의 프로덕션 및 로컬 개발 인스턴스가 있습니다. 로컬 개발 중에는 SMTP 보내는 전자 메일을 사용하지 않도록하고 싶습니다. 관리 UI에서 전자 메일을 비활성화하는 방법을 알고 있지만 일을 최신 상태로 유지하기 위해 일반적으로 데이터베이스를 프로덕션에서 개발로 복사하기 때문에 데이터베이스를 복사 할 때마다 비활성화해야한다는 것을 기억해야합니다.과수원 Smtp 전자 메일 사용 안 함

구성 파일 중 하나를 통해 또는 데이터베이스 기반이 아닌 방법으로 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>