在我的(Web)应用程序的配置中,System.Net.Mail
命名空间当前配置为使用 IIS 邮件拾取目录:
<smtp deliveryMethod="PickupDirectoryFromIis"/>
我的应用程序假定了实际用户的身份,并且似乎只有以管理员组中的某个用户身份登录时才允许发送邮件。当非管理员触发某些用于System.Net.Mail.SmtpClient
发送邮件的操作时,他们会收到一条错误消息,提示 .NET 无法从 IIS 获取接收目录。
将 web.config 更改为使用“SpecifiedPickupDirectory”只能部分解决问题,因为它会引入一个新问题:用户在尝试发送邮件时需要重新进行身份验证。显然,非管理员不允许写入接收目录。
解决这个问题的“正确”方法是什么?我可以手动更改拾取目录的 ACL 以授予用户组的写入权限,但这似乎不太优雅/安全。此外,如果可能的话,我更愿意保留“PickupDirectoryFromIis”设置。有没有办法控制谁可以通过 IIS 对邮件进行排队?
答案1
在没有其他可用解决方案的情况下,我只是将 pickup 文件夹设置为对我的用户所属的组可写的。