Office 365 enable IMAP/POP3 and SMTP access
First log in to Microsoft 365 admin portal at https://admin.microsoft.com/ as an administrator, go to Org settings screen and find Modern authentication entry:
Check ‘Turn on modern authentication…‘ for OAuth flows.
Check IMAP, POP3 and SMTP for App passwords flows.
Then go to Users screen:
Select an user and on the Mail tab click Manage email apps
Check IMAP, Pop and Authenticated SMTP to turn on the protocols for this account
Have in mind it takes 20-30 minutes for the changes to take effect.
AD configuration
In your Active Directory, make sure Enable Security defaults is set to No:
Make sure there are no Conditional Access | Policies defined in your AD:
Authentication – Basic Auth [deprecated]
It is no longer possible to re-enable Basic Auth or use App passwords.
To use basic authentication (username/password) you’ll need to
Re-enable Basic Auth for your tenant
For MFA enabled/enforced accounts you must
Create and use App passwords
using (Imap imap = new Imap())
{
imap.ConnectSSL("outlook.office365.com");
imap.UseBestLogin(
"AdeleV@limilabs.onmicrosoft.com",
"password");
imap.SelectInbox();
List<long> uids = imap.Search(Flag.Unseen);
foreach (long uid in uids)
{
IMail email = new MailBuilder()
.CreateFromEml(imap.GetMessageByUID(uid));
string subject = email.Subject;
}
imap.Close();
}
Authentication – OAuth 2.0
Daemons/Services: Password grant (MFA/2FA must be turned off for this account):
https://www.limilabs.com/blog/oauth2-password-grant-office365-exchange-imap-pop3-smtp
Daemons/Services: Client credential flow:
https://www.limilabs.com/blog/oauth2-client-credential-flow-office365-exchange-imap-pop3-smtp
Web apps (requires user interaction):
https://www.limilabs.com/blog/oauth2-web-flow-office365-exchange-imap-pop3-smtp
Standalone devices (requires very little interaction):
https://www.limilabs.com/blog/oauth2-device-flow-office365-exchange-imap-pop3-smtp
Desktop apps (requires user interaction):
https://www.limilabs.com/blog/oauth2-office365-exchange-imap-pop3-smtp
using (Imap imap = new Imap())
{
imap.ConnectSSL("outlook.office365.com");
imap.UseBestLogin(
"AdeleV@limilabs.onmicrosoft.com",
"access-token");
imap.SelectInbox();
List<long> uids = imap.Search(Flag.Unseen);
foreach (long uid in uids)
{
IMail email = new MailBuilder()
.CreateFromEml(imap.GetMessageByUID(uid));
string subject = email.Subject;
}
imap.Close();
}
Exchange administration
You can find the same mailbox/user settings through Exchange administration screens:
Get Mail.dll