果园禁用Smtp电子邮件

时间:2014-12-14 13:06:35

标签: email smtp orchardcms

我目前有一个Orchard网站的制作和本地开发实例。我希望在本地开发中禁用SMTP外发电子邮件。我知道如何从管理UI中禁用电子邮件,但由于我通常将我的数据库从生产复制到开发以保持最新,这意味着每次复制数据库时都必须记住禁用。 / p>

有没有办法通过其中一个配置文件禁用SMTP电子邮件,或者通过一些非数据库驱动的方式?

1 个答案:

答案 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>