Example script:
import requests
refresh_token = "M.C554_BAY.0.U.MsaArtifacts.-CgdvMTwevhUoWJ8hL!h7WFYAk1q9k3T5XrfVRQ2Ti6O5IzJLqlRl0ZcVVkVoiuJHYmRXxryFMcQ8ur!MIAWahNWmhYDNXAHOvgzSafBaOXsFzHOdCrrOrSxBJHDJMFEMhTpfNy1msZcPVLFFSECnsLCbOM!y9mYETa1jKs*Y1NZBSw71i38teo00Pz*MXJVPg6!RNEp742pmF7s3viAmc2VC!NSt2pr6Riqb!edwcKtL*F!iQg2IvX4Brt7jqgTe6GuzJ5Ua8lLuGScAF6Nte!Wvv7NZk39H8s0gdYbm2nmcPXZKJFaVIUFag**9Nb4*SDMgslxqTbdsGtpf2aNlx8KkeeT9WH!FhAoaTgSq91pTknUhm!zEqe7yTzC82q23lQfvVQ3TLkX18hmiD8twuhoqWxVLeyYR9Py!N3xSLlMa"
client_id = "f8d98a96-0999-43f5-8af3-69971c7bb423"
def get_access_token(refresh_token: str, client_id: str) -> str:
res = requests.post(
"https://login.microsoftonline.com/common/oauth2/v2.0/token",
data={
"client_id": client_id,
"grant_type": "refresh_token",
"refresh_token": refresh_token,
"scope": "https://graph.microsoft.com/.default"
}
)
return res.json()["access_token"]
def print_inbox(access_token: str) -> None:
res = requests.get(
"https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages",
headers={"Authorization": f"Bearer {access_token}"},
)
res.raise_for_status()
for m in res.json().get("value", []):
print(f"Subject: {m.get('subject')}")
print(f"From: {m.get('from', {}).get('emailAddress', {}).get('address')}")
print(f"Text: {m.get('bodyPreview')}")
# print(f"Html: {m.get('body', {}).get('content')}")
print(f'\n{"-" * 50}\n', end='')
access_token = get_access_token(refresh_token, client_id)
print('connected to mailbox successfully!')
print_inbox(access_token)
