E-Mails aus Exchange öffentlicher Ordner per IMAP lesen
Hallo,
wie kann ich per Python3 (imaplib) E-Mails aus einem (E-Mail aktivierten) öffentlichen Ordner auslesen?
Ich finde nicht die Möglichkeit das Postfach (den öO) anzugeben. Kann nur die E-Mails aus dem Postfach lesen, welches direkt zu den Anmeldedaten passt.
Beim Exchange 2013 ist aber der Zugriff auf öO per IMAP möglich (so habe ich es gelesen).
vG
LS
wie kann ich per Python3 (imaplib) E-Mails aus einem (E-Mail aktivierten) öffentlichen Ordner auslesen?
Ich finde nicht die Möglichkeit das Postfach (den öO) anzugeben. Kann nur die E-Mails aus dem Postfach lesen, welches direkt zu den Anmeldedaten passt.
Beim Exchange 2013 ist aber der Zugriff auf öO per IMAP möglich (so habe ich es gelesen).
vG
LS
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1186940566
Url: https://administrator.de/contentid/1186940566
Ausgedruckt am: 21.11.2024 um 20:11 Uhr
10 Kommentare
Neuester Kommentar
Benutze statt IMAP die Exchange Web Services (EWS) für den Zugriff auf den öffentlichen Ordner
https://pypi.org/project/exchangelib/
https://pypi.org/project/py-ews/
https://pypi.org/project/exchangelib/
https://pypi.org/project/py-ews/
Zitat von @laster:
wie kann ich per Python3 (imaplib) E-Mails aus einem (E-Mail aktivierten) öffentlichen Ordner auslesen?
Ich finde nicht die Möglichkeit das Postfach (den öO) anzugeben. Kann nur die E-Mails aus dem Postfach lesen, welches direkt zu den Anmeldedaten passt.
Beim Exchange 2013 ist aber der Zugriff auf öO per IMAP möglich (so habe ich es gelesen).
Ich finde nicht die Möglichkeit das Postfach (den öO) anzugeben. Kann nur die E-Mails aus dem Postfach lesen, welches direkt zu den Anmeldedaten passt.
Beim Exchange 2013 ist aber der Zugriff auf öO per IMAP möglich (so habe ich es gelesen).
Nein das funktioniert schon lange nicht mehr, laut Dokumentation (Exchange 2013):
IMAP4 also doesn't support public folder access.
Servus.
Hier mal ein einfaches Beispiel mit dem exchangelib Modul = > Für weitere Details siehe Dokumentation bzw. für noch mehr Details wie Felder und Funktionen der Objekte der Source-Code
Username (Zeile 5), Passwort (Zeile 6) und Pfad zum Public Folder (Zeile 20) sind anzupassen.
Grüße Uwe
Hier mal ein einfaches Beispiel mit dem exchangelib Modul = > Für weitere Details siehe Dokumentation bzw. für noch mehr Details wie Felder und Funktionen der Objekte der Source-Code
Username (Zeile 5), Passwort (Zeile 6) und Pfad zum Public Folder (Zeile 20) sind anzupassen.
#!/usr/bin/python3
import exchangelib
#credentials
user = 'user@domain.tld'
pass = 'Passw0rd'
# create credentials object
creds = exchangelib.Credentials(user,pass)
# account
exchangelib.Account(primary_smtp_address=user,credential=creds,autodiscover=True,access_type=exchangelib.DELEGATE)
# get public folder root
pfroot = account.public_folders_root
# refresh folders
pfroot.refresh()
print("Showing Public folder tree:\n")
print(pfroot.tree())
print("\nShowing unread items in folder 'MyMailfolder':\n")
# select folder from tree (in this example an folder named "MyMailFolder" in the root of the IPM_SUBTREE
folder = pfroot / 'MyMailFolder'
# for each unread message in folder ...
for msg in folder.filter(is_read=False):
print("="*80)
print("Mail sender : " + msg.sender.email_address)
print("Mail subject : " + msg.subject)
print("Mail body :\n" + msg.body)
Servus
https://ecederstrand.github.io/exchangelib/#folders
Grüße Uwe
Zitat von @laster:
Wie kann ich den Folder dynamisch angeben?
z.B:
Wie könnte aber die Funktion createFolder() aussehen?
im einfachsten Fall z.B. so: Mailbox-Root als erster Parameter, und im zweiten die Subfolder definiert als ListeWie kann ich den Folder dynamisch angeben?
z.B:
> my_folder = createFolder(pfroot, "MyMailFolder", "MyMail_Under_Folder")
>
Wie könnte aber die Funktion createFolder() aussehen?
def createFolder(root,subfolders):
if len(subfolders) > 0:
result = root.glob('/'.join(subfolders))
if len(result) > 0:
return result._get_single_folder()
else:
raise ValueError('subfolder cannot be empty')
my_folder = createFolder(pfroot, ["MyMailFolder", "MyMail_Under_Folder"])
Grüße Uwe
Zitat von @laster:
Beim Aufruf von my_folder.tree() bekomme ich dann
AttributeError: 'FolderCollection' object has no attribute 'tree'
Beim Aufruf von my_folder.tree() bekomme ich dann
AttributeError: 'FolderCollection' object has no attribute 'tree'
Zeigt dir übrigens auch ein :
dir(my_folder)
#edit#, Sorry das kam weil die Funktion eine collection zurückgegeben hat statt einem einzelnen Ordner, ist korrigiert.