connect to exchange server
This commit is contained in:
46
imap-over-tls-example.py
Normal file
46
imap-over-tls-example.py
Normal file
@@ -0,0 +1,46 @@
|
||||
#!/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.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()
|
||||
Reference in New Issue
Block a user