I have gmail, exchange, and disroot accounts setup in neomutt. For gmail I had to generate an app specific password for neomutt because I use 2FA with gmail and neomutt doesn’t use Oauth2 as authentication method. Although, I was too lazy to try them, there are some options to use xoauth2. No surprise, exchange was the trickiest one to get working. I have to use Davmail for that. Behind an apparent complexity you just need your exchange email URL to get it running, and then you use the Davmail ports in neomutt.
A related post that you may find interesting: https://lemmy.ml/post/23440879