使用交换Web服务阅读电子邮件

use*_*432 8 email exchangewebservices exchange-server-2010

这是我的方案:我必须阅读来自Exchange 2010 sp2帐户的电子邮件.我必须使用Exchange Web服务,POP3和IMAP被阻止.我必须在人们只能通过Intranet中的Web浏览器访问其帐户的环境中测试我的应用程序.我无法直接将此应用程序调试到此Intranet.我有这个代码片段来访问帐户:

private void Dowork()
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);

    string dominio = "domain";
    string usuario = "user";
    string password = "password";

    service.Credentials = new NetworkCredential(usuario, password, dominio);

    string url = usuario + "@" + dominio + ".com";

    service.AutodiscoverUrl(url, RedirectionUrlValidationCallback);
    //service.AutodiscoverUrl(url);

    FindItemsResults<Item> findResults = service.FindItems(
       WellKnownFolderName.Inbox,
       new ItemView(10));

    string content = string.Empty;

    foreach (Item item in findResults.Items)
    {
        EmailMessage email = EmailMessage.Bind(service, item.Id);
        email.Load();

        content += item.Subject + "\n";
        content += email.From.Address + "\n";
        content += email.Body + "\n\n";

        //Console.WriteLine(item.Subject);
        //Console.WriteLine(email.From.Address);
        //Console.WriteLine(email.Body);
    }

    string result = content;
}

// Create the callback to validate the redirection URL.
static bool RedirectionUrlValidationCallback(String redirectionUrl)
{
    // Perform validation.
    return (redirectionUrl == "https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml");
}
Run Code Online (Sandbox Code Playgroud)

如果我使用这一行:

service.AutodiscoverUrl(url);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

"自动发现阻止了可能不安全的重定向到https://autodiscover.colpatria.com/autodiscover/autodiscover.xml.要允许自动发现遵循重定向,请使用AutodiscoverUrl(string,AutodiscoverRedirectionUrlValidationCallback)重载."

所以方法RedirectionUrlValidationCallback实现了,我不确定网址是否正确.事实是我收到了这个错误:

"无法找到自动发现服务".

是否可能没有正确配置自动发现?我不是交换管理员,我怎么知道自动发现是否有效?我需要参数来告诉交换管理员必须配置此功能.谢谢你的帮助.

Sli*_*SFT 2

您需要以某种方式记录结果redirectionUrlredirectionUrl当您的URI 与您指定的 URI 不匹配时(即您的自动发现验证回调返回FALSE) ,您将收到此错误。当然,redirectionUrlURI 并不是您想象的那样。如果您使用 SSL - 您需要处理重定向验证回调。

由于您无法调试应用程序,也许您可​​以向自己发送电子邮件、记录到共享数据库或文件,或者可能使用应用程序事件日志(引发应用程序异常)。

注意:第一个错误确实告诉您自动发现 URI 是https://autodiscover.colpatria.com/autodiscover/autodiscover.xml。这应该替换现有的字符串吗https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml

另请参阅MSDN 上有关 Exchange 自动发现验证潜在不安全重定向 URL 的相关 SO 帖子。