49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
import imaplib
|
|
import msal
|
|
import pprint
|
|
|
|
conf = {
|
|
"authority": "https://login.microsoftonline.com/47f02128-acf0-47a7-a3bf-27a3619d4a4f",
|
|
"client_id": "4fdf2634-a260-4576-a442-684998f0187b", #AppID
|
|
"scope": ['https://outlook.office365.com/.default'],
|
|
"secret": "dZD8Q~GmG_PFi.t_uRiyBEzwLeMZeemQGHUFta~J", #Key-Value
|
|
"secret-id": "5cae3249-0fc0-43e2-bc0e-d78f41964970", #Key-ID
|
|
}
|
|
|
|
def generate_auth_string(user, token):
|
|
return f"user={user}\x01auth=Bearer {token}\x01\x01"
|
|
|
|
if __name__ == "__main__":
|
|
app = msal.ConfidentialClientApplication(conf['client_id'], authority=conf['authority'],
|
|
client_credential=conf['secret'])
|
|
|
|
result = app.acquire_token_silent(conf['scope'], account=None)
|
|
|
|
if not result:
|
|
print("No suitable token in cache. Get new one.")
|
|
result = app.acquire_token_for_client(scopes=conf['scope'])
|
|
|
|
if "access_token" in result:
|
|
print(result['token_type'])
|
|
pprint.pprint(result)
|
|
else:
|
|
print(result.get("error"))
|
|
print(result.get("error_description"))
|
|
print(result.get("correlation_id"))
|
|
|
|
|
|
# imap = imaplib.IMAP4('outlook.office365.com')
|
|
# imap.starttls()
|
|
imap = imaplib.IMAP4_SSL('outlook.office365.com', 993)
|
|
imap.authenticate("XOAUTH2", lambda x: generate_auth_string("polynet-dumas@entreprise-dumas.com",
|
|
result['access_token']).encode("utf-8"))
|
|
|
|
# Print list of mailboxes on server
|
|
code, mailboxes = imap.list()
|
|
for mailbox in mailboxes:
|
|
print(mailbox.decode("utf-8"))
|
|
# Select mailbox
|
|
imap.select("INBOX")
|
|
# Cleanup
|
|
imap.close() |