如何自动创建电子邮件提取目录?

时间:2016-01-06 16:43:48

标签: asp.net-mvc

ASP.NET MVC应用程序中有一个电子邮件提取目录:

<system.net>
    <mailSettings>
      <smtp from="no-reply@test.com" deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="C:/emails"/>
        <network host="localhost"/>
      </smtp>
   </mailSettings>
</system.net>

Web应用程序在启动时不会自动创建目录c:\emails。可以轻松设置吗?或者我是否需要解析web.config并在启动时“手动”创建目录?

1 个答案:

答案 0 :(得分:4)

我认为没有任何“开箱即用”的东西可以做到这一点 - 但是自己做这件事也很容易。

您可以使用此代码段,您可以将其放入例如您的global.asax.cs文件采用适当的方法之一(例如Application_Start):

// get the config section <system.net>/<mailSettings>/<smtp>
SmtpSection smtpConfig = ConfigurationManager.GetSection("system.net/mailSettings/smtp") as SmtpSection;

if (smtpConfig != null)
{
    // if you have DeliveryMethod=SpecifiedPickupDirectory
    if(smtpConfig.DeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory)
    {
        // read out the configured directory 
        string pickupDir = smtpConfig.SpecifiedPickupDirectory.PickupDirectoryLocation;

        // check if directory exists....
        if (!Directory.Exists(pickupDir))
        {
            // and if not - just create it!
            Directory.CreateDirectory(pickupDir);
        }
    }
}