c# programmatically reading emails from the Exchange server

主宰稳场 提交于 2019-11-30 01:32:11

You don't necessarily need to use the autodiscovery if you already know the address of your exchange server. Try the following instead (for more info, look here:

service.Url = new Uri("https://hostname/EWS/Exchange.asmx");

Replace "hostname" with the hostname for your exchange server.

I hope you should have the solution by this time now. This is just to help anyone bumped on this post. I found the solution on one of the technet article, I twick to suite me, and is working fine for me.

Just replace the line in your code with following:

service.AutodiscoverUrl("user@yourdomain.com",
delegate
{
     return true;
});

I had some other issues but not related to this bit though.

Happy Coding,

Sanjay.

I had the same issue with AutoDiscover. It's not necessary, you can specify your URL like

    Uri myUri = new Uri("https://Hostname/ews/exchange.asmx");
    userData.AutodiscoverUrl = myUri;
    service.Url = myUri;

As the hostname you can put the Server IP address like 192.168.100.10

Alternatively, to find what your Exchange server hostname is (in in fact the whole url to use) if you are using Outlook, go to your computer start bar, where the Date and time is showing, you will find the Outlook icon, hold Ctrl + right click on the outlook icon and click “Test Email Auto Configuration”

Check the "Use AutoDiscover" checkbox. Enter an email address hosted on that Exchange Server along with its password and you will recieve a bunch of url's. Use the 1 that says "Availability Service URL"

Consider that the credentials being passed need to have permission to the given exchange mailbox / server. In my case using a different set of credentials that are properly permissioned works but not for a service account which I'm trying to get to work. Once I discover what exactly the account needs to be permissioned for I will update it here.

Update: My issue was the service account was from a domain different than the domain on which the exchange 2007 instance is running, even though there is a trust relationship between the two. I found this is a documented known issue in Exchange 2007 in how it looks up accounts in its forest. In the end had to create an identical service account (name/pass) on the domain on which the exchange server is sitting and specify username as {exchange_domain}{service_account_name}. The windows service that calls EWS runs as {original_domain}{service_account_name}.

For reference, the exception was: Microsoft.Exchange.WebServices.Data.ServiceResponseException: Failed to get valid Active Directory information for the calling account. Confirm that it is a valid Active Directory account.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!