我将 IIS 的 SMTP 服务器设置为封闭中继,运行良好。我还有一个写入 EML 文件的应用程序。如果将 EML 文件写入临时目录,然后移动到服务器的 Pickup 目录,电子邮件就会按预期发送。但是,如果我让应用程序将 EML 文件直接写入 Pickup 目录,电子邮件通常会发送失败。
这似乎是一种竞争条件:服务器在 Pickup 中检测到 EML 文件后立即开始处理该文件,即使应用程序尚未完成写入。结果是服务器认为 EML 格式错误,并将其发送到 Badmail。
虽然我非常感谢服务器的认真,但似乎我需要针对这种情况稍微收敛一下。有人知道是否可以配置 IIS 的 SMTP 服务器的轮询频率吗?
我正在使用 IIS7、Windows Server 2008 R2。无法修改写入 EML 的应用程序。
答案1
一旦文件系统报告文件存在,IIS SMTP 服务就会拾取文件,因此无需配置间隔。我们在 Windows Server 2003 上使用 SMTP 和 IIS6 对拾取文件夹执行了同样的操作,没有任何问题。我们还没有尝试过 IIS7,但听起来他们可能改变了它监视文件的方式。您可以尝试将文件写入另一个文件夹,然后安排一个批处理文件每分钟将它们全部移动到拾取文件夹一次,看看这是否有助于避免问题。