Readout mailroot-path for IIS 6 & 7 using c#
本文关键字:using amp mailroot-path for IIS Readout | 更新日期: 2023-09-27 18:18:01
我正在尝试为我的SMTP虚拟服务器域读出投递和拾取文件夹的邮件根路径。我目前需要这与IIS 6.0创建的域,但从长远来看,还需要我的应用程序与IIS 7兼容。谁能给我点建议,告诉我该怎么做?
谢谢!
更多细节:
-
我有:带本地别名的SMTP虚拟服务器域:mydomain
-
我想要的:邮件根路径(默认:C:'inetpub'mailroot),其中包含Badmail、Drop、Pickup和Queue文件夹。如果不可能,那么至少是Drop文件夹
的路径 为什么我想要这个?例如,使用IIS 6.0,用户可以将Drop目录更改为用户特定的位置。因此,我不想硬编码路径,而是使用c#读取它。
我已经试着找到这个信息:
读取虚拟目录
检查iisWebSite属性
SmtpDeliveryMethod。PickupDirecotryFomIis
System.Net.Mail.IisPickupDirectory.GetPickupDirectory() ->无法找到方法
正在读取smtp。pickupdirectorylocation为字符串——>返回一个空字符串
将非常感谢任何帮助/想法!
我不确定,但这可能会帮助你。因为IIS6和IIS7都有相同的设置。
http://www.kbcafe.com/articles/HowTo.SMTP.CSharp.pdf您要查找的信息在IIS元数据库中。有一些托管类可以访问元数据库,但是您也可以直接读取文件。下面是一个示例代码:
public static string GetSmtpPickupFolder()
{
var doc = new XmlDocument();
var fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.Windows), @"System32'inetsrv'MetaBase.xml");
if (!File.Exists(fileName))
{
return null;
}
doc.Load(fileName);
var nsMgr = new XmlNamespaceManager(doc.NameTable);
nsMgr.AddNamespace("c", doc.DocumentElement.NamespaceURI);
var node = doc.SelectSingleNode(
"/c:configuration/c:MBProperty/c:IIsSmtpServer", nsMgr);
if (node == null)
{
return null;
}
var attr = node.Attributes["PickupDirectory"];
if (attr == null)
{
return null;
}
return attr.Value;
}
确保以64位应用程序运行,否则文件系统重定向会将您发送到c:'windows'SysWOW64而不是