我目前有一个Orchard网站的制作和本地开发实例。我希望在本地开发中禁用SMTP外发电子邮件。我知道如何从管理UI中禁用电子邮件,但由于我通常将我的数据库从生产复制到开发以保持最新,这意味着每次复制数据库时都必须记住禁用。 / p>
有没有办法通过其中一个配置文件禁用SMTP电子邮件,或者通过一些非数据库驱动的方式?
答案 0 :(得分: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>