asp.net - SpecifiedPickupDirectory在服务器上的用户查看之前不会创建文件

标签 asp.net iis smtp

我在测试过程中使用了一个“技巧”(很好地描述了here)将我的电子邮件存储在应用程序服务器上。

我的配置文件如下所示:

<system.net>  
    <mailSettings>    
        <smtp deliveryMethod="SpecifiedPickupDirectory" from="no-reply@here.com">      
            <specifiedPickupDirectory pickupDirectoryLocation="E:\EmailStore" />    
        </smtp>  
    </mailSettings>
</system.net>

该目录存在,并且没有权限问题。

这是问题所在。在我导航到服务器上的文件夹之前,将不会创建文件。然后突然 bang 所有文件都弹出到目录中。

任何人都知道发生了什么事吗?

我注意到还有另一种选择-PickupDirectoryFromIis-但我不清楚何时应使用SpecifiedPickupDirectory和何时应使用PickupDirectoryFromIis
SpecifiedPickupDirectoryPickupDirectoryFromIis有什么区别?我什么时候应该在另一个上使用?这是导致文件在我导航之前不出现的原因吗?

最佳答案

这是一个从ASP.NET 3.5迁移到ASP.NET 4.0的项目

看来System.Net.Mail.SmtpClient现在实现了IDisposable。更改代码以使用以下模式似乎已解决了问题。

造成这种情况的最佳猜测是未调用GC,并且未刷新文件缓冲区。

using (System.Net.Mail.MailMessage email = new System.Net.Mail.MailMessage())
{
   using (System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient())
   {
      // code
   }
}

关于asp.net - SpecifiedPickupDirectory在服务器上的用户查看之前不会创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421330/

相关文章:

iis - 如何使用域 Windows 用户帐户作为应用程序池标识

windows - .aspx页面的IIS限制错误,但是.aspx没有被限制

python - 使用 SMTP 和 Python 3 发送 xlsx 文件

sockets - 在发送电子邮件之前确定 TLS 支持

c# - 使用 runat ="server"导致 View 状态 MAC 验证失败

c# - 如何将十六进制#FFFFFF 转换为 System.Drawing.Color

c# - 在 ASP.NET 应用程序启动时显示 stub 页面

python - 使用python发送邮件出现错误

javascript - 根据从 MSSQL 数据库检索的数值在 div 中动态创建星形字形 C#

c# - 从 JavaScript 更改属性后面的 aspx 代码