2

PowerShell を使用して、Get-MailPublicFolder を呼び出して、Exchange のメールが有効なパブリック フォルダーに関するメール関連の情報を取得できます。

EWSを使用して同じことをしたい。特に、パブリック フォルダーの電子メール アドレスを取得します。

これまでのところ、パブリック フォルダーを Microsoft.Exchange.WebServices.Data.Folder オブジェクトのリストとして取得することができました。しかし、フォルダーの電子メール アドレスを返すフォルダー オブジェクトのプロパティが表示されません。そして、ExtendedProperties プロパティを確認しましたが、空のリストです。

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = true;

// Use Autodiscover to set the URL endpoint.
service.AutodiscoverUrl("joe.bloggs@microsoft.com");

Folder rootfolder = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);
FolderView folderView = new FolderView(1000);

foreach (Folder folder in rootfolder.FindFolders(folderView))
{
    folder.Load();
    System.Diagnostics.Debug.WriteLine("Folder Name: " + folder.DisplayName);

    if (folder.ExtendedProperties.Count > 0)
    {
        foreach (ExtendedProperty ep in folder.ExtendedProperties)
        {
            System.Diagnostics.Debug.WriteLine(" " + ep.PropertyDefinition.Name + " = " + ep.Value);
        }
    }                    
}

誰かが EWS を使用してそれを行う方法の例を見せてもらえますか?

ありがとうございました

アップデート

Shay が投稿したコードを C# に変換しましたが、動作します :)

C# に変換されたコードは次のとおりです。

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.UseDefaultCredentials = true;

// Use Autodiscover to set the URL endpoint.
service.AutodiscoverUrl("joe.bloggs@microsoft.com");

Folder rootfolder = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);

FolderView folderView = new FolderView(1000);
ExtendedPropertyDefinition proxyProp = new ExtendedPropertyDefinition(26397, MapiPropertyType.Binary);
folderView.PropertySet = new PropertySet(proxyProp);

foreach (Folder folder in rootfolder.FindFolders(folderView))
{
    object objectGuid;
    if (folder.TryGetProperty(proxyProp, out objectGuid))
    {
        objectGuid = System.BitConverter.ToString((byte[])objectGuid).Replace("-", "");
        var adFolder = new DirectoryEntry(string.Format("LDAP://<GUID={0}>", objectGuid.ToString()));
        var mailVal = adFolder.Properties["Mail"].Value;
    }
}
4

1 に答える 1