Read emails from exchange online (Office 365) through windows forms application

(Second) UPDATE:

As of March 18, 2021 - the retirement of Exchange Web Services basic authentication has been placed on hold until further notice. Please see the latest attached link.

UPDATE - Exchange Online deprecating Basic Authentication

(First) UPDATE:

Microsoft announced on the 3rd April 2020, that in light of the current COVID-19 crisis, Exchange Web Services would continue to operate as current until the second half of 2021 for tenants still actively using it.

We will continue to disable Basic Authentication for newly created tenants by default and begin to disable Basic Authentication in tenants that have no recorded usage starting October 2020

Basic Authentication and Exchange Online - April 2020 Update

The below post still applies with respect to the changes, it has just been postponed with no precise date. See the link above for full details.

ORIGINAL:

Given how this is a fairly popular question appearing quite high up on Google search rankings, it's probably worth noting that there is only 12 months left (at the time of writing) to use the Exchange Web Services before it is retired.

The preferred method to connect to these services is through OAuth.

Q: Will my application stop working when you make this change?

A: It might, yes, it depends on the app itself and how it was coded. If it’s using EWS, and if it’s using Basic authentication then yes, on October 13th 2020 it will fail to connect. However, if the app is using Modern Auth/OAuth, then no, it will keep working as it did before.

Upcoming changes to Exchange Web Services (EWS) API for Office 365

For anyone currently using the above method by Matt for Office 365 mail services, this will apply. Anyone using on-prem exchange services remains unaffected.


Yes, you can do with with Exchange web service API. It is designed for client application. Follow the link, you can find a lot of examples.

One note is: to create the service client, you need specify the version of the Exchange Server, it should be ExchangeVersion.Exchange2013_SP1 for exchange online.

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);