IMAP API in Python: imaplib, IMAPClient & OAuth XOAUTH2 Gids
Een complete gids voor het bouwen van Python IMAP e-mailclients in 2026: van stdlib imaplib basics tot IMAPClient production patterns, OAuth XOAUTH2 authenticatie voor Gmail en Outlook, en wanneer een unified email API u volledig van de complexiteit bespaart.
importeer imaplib, e-mail
van e-mail.kop importeer decode_header
# Verbinding maken met OAuth XOAUTH2
e-mail = imaplib.IMAP4_SSL('imap.gmail.com')
auth_str = build_xoauth2(gebruiker, token)
e-mail.authenticeren('XOAUTH2', lambda x: auth_str)
# Ongelezen berichten ophalen
e-mail.select('POSTVAK')
_, id's = e-mail.zoek(Niets, 'ONGEZIEN')
voor uid in ids[0].deel():
_, gegevens = e-mail.fetch(uid, '(RFC822)')
bericht = e-mail.bericht_van_bytes(gegevens[0][1])Wat is een IMAP Python-client?
Een IMAP API Python Een client is elk Python-programma dat via het IMAP4-protocol (RFC 3501) met een mailserver communiceert om e-mailberichten te lezen, te doorzoeken, te ordenen en te synchroniseren. In tegenstelling tot SMTP, dat alleen e-mail verstuurt, biedt IMAP je applicatie bidirectionele toegang tot een externe mailbox: je kunt kopteksten ophalen, de inhoud van berichten lezen, vlaggen instellen, berichten tussen mappen verplaatsen en met behulp van IMAP IDLE in realtime controleren of er nieuwe berichten zijn binnengekomen.
IMAP (Internet Message Access Protocol) is een standaardprotocol waarmee clients e-mailberichten kunnen ophalen en beheren die op een externe server zijn opgeslagen. Een Python IMAP-client maakt verbinding via TLS-poort 993, verifieert zich (Basic of OAuth XOAUTH2) en voert vervolgens IMAP-opdrachten uit om berichten op te halen, te doorzoeken, te markeren en te ordenen. Python biedt drie abstractieniveaus: de standaardbibliotheek imaplib, het hogere IMAPClient wrapper, en volledig asynchrone opties zoals aioimaplib. Voor een volledig overzicht van de IMAP-architectuur en use cases, zie onze IMAP API ontwikkelaarsgids.
Synchroniseer de inboxen van gebruikers met uw CRM, ATS of helpdesk. Met Python IMAP kunt u nieuwe berichten ophalen of (via IDLE) naar uw database pushen zonder dat u een volledige e-mailserver hoeft te beheren.
Extraheer, classificeer en stuur inkomende e-mails door met Python. Je IMAP-client vult een verwerkingswachtrij: het parseren van facturen, het aanmaken van tickets, het toekennen van scores aan leads of het samenvatten met een groot taalmodel.
Test e-mailbezorging, bouw inbox zero-tools, of auditeer de leverbaarheid. Python IMAP geeft je programmatische toegang tot dezelfde mailbox die je gebruikers zien. Bekijk onze e-mail API gids voor het volledige ecosysteem.
De 3 Python IMAP Stack Opties
De keuze voor de juiste Python IMAP-bibliotheek hangt af van je specifieke toepassing: een snel script, een productieservice of een asynchrone pijplijn. Hieronder vind je een vergelijking van de belangrijkste opties, waarna we per optie enkele codevoorbeelden zullen bekijken.
| Bibliotheek | Type | OAuth-ondersteuning | Asynchroon | Hulpfuncties voor parseren | Beste voor |
|---|---|---|---|---|---|
| imaplib | Stdlib (geen afhankelijkheden) | Handmatig | Geen | Minimaal | Eenvoudige scripts, geen externe afhankelijkheden |
| IMAPClient | Wrapper van derden | Handmatig | Geen | Goed | Productie IMAP zonder async |
| aioimaplib | Async bibliotheek | Handmatig | Ja | Beperkt | asyncio-pijplijnen en IDLE op grote schaal |
| Unipile APIBeste | Geconsolideerde REST/SDK | Ingebouwd | Ja | Vol | Meerproviderproductie op schaal |
Sla de IMAP-complexiteit over. Unipile abstraheert imaplib, OAuth en multi-providerlogica in één REST API. Eén integratie voor Gmail, Outlook en elke IMAP-server.
Gratis beginnen met bouwenSnelle start: Verbinden met IMAP met imaplib
De standaardbibliotheek van Python wordt geleverd met imaplib - geen installatie nodig. Hier is een complete walkthrough van verbinding tot body fetch, met eerlijk commentaar op waar de pijnpunten zitten.
Gebruik imaplib.IMAP4_SSL op poort 993 voor een versleutelde verbinding. Voor Gmail en Outlook, zie de serveradressen in ons IMAP-server verbindingshandleiding. Basic Auth (wachtwoord) werkt voor IMAP-servers die dit nog toestaan - maar Gmail en Outlook vereisen nu OAuth XOAUTH2 (behandeld in Sectie 5).
importeer imaplib
# Verbinding maken met Gmail IMAP (TLS-poort 993)
e-mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
# Basisauthenticatie (alleen app-wachtwoord – OAuth heeft de voorkeur)
e-mail.Login('user@gmail.com', 'app-wachtwoord')
# Alle mailboxen weergeven
status, postbussen = e-mail.list()
voor doos in brievenbussen:
printdoos.ontcijfer('utf-8'))
e-mail.uitloggen()De select() oproep opent een postbus en retourneert het aantal berichten. zoek() geeft een spatiegescheiden byte-string van bericht-ID's terug - geen UID's. Je moet handmatig decoderen en splitsen.
# Selecteer INBOX (of een willekeurige map)
status, aantal = e-mail.select('POSTVAK')
print(Berichten: {count[0].decode()}')
# Zoeken naar ONLEZEN berichten
status, msg_ids = e-mail.zoek(Niets, 'ONGEZIEN')
identificatiebewijzen = msg_ids[0].deel()
print(Aantal ongelezen: {len(ids)}')
# Zoeken op afzender
_, uit_ids = e-mail.zoek(Niets, 'VAN', 'boss@company.com')
# Zoeken op datumbereik
_, recent = e-mail.zoek(Niets, 'sinds', '01-jan-2026')Dit is waar imaplib wordt rommelig. Het ruwe antwoord is een lijst van tuples die bytes bevatten. Je moet indexeren data[0][1] om het ruwe bericht te bereiken, doorgeef het dan aan de e-mail module voor het parsen. Headers zijn RFC 2047-gecodeerd en vereisen decode_header().
importeer e-mail
van e-mail.kop importeer decode_header
def decode_str(waarde):
"RFC 2047 gecodeerde headerwaarde decoderen."
onderdelen = decode_header(waarde)
ontcijferd = []
voor gedeelte, insluiten in onderdelen:
als isinstancedeel, bytes):
gedecodeerd.toevoegen(onderdeel.ontcijfer(versleuteld of 'utf-8', fouten='vervang'))
anders:
gedecodeerd.toevoegen(deel)
return ' '.meedoen(gedecodeerd)
voor uid in ids[-5:]: # laatste 5 berichten
_, gegevens = e-mail.fetch(uid, '(RFC822)')
rauw = gegevens[0][1] De ellende van het uitpakken van #-tuples
bericht = e-mail.bericht_van_bytesruw
onderwerp = decode_str(bericht['Onderwerp'] of '')
afzender = decode_str(bericht['Van'] of '')
# Walk MIME-onderdelen voor een tekstblok in platte tekst
als bericht.is_deel():
voor deel in bericht.lopen():
als deel.get_content_type() == 'tekst/plat':
lichaam = deel.haal_payload(ontcijfer=Waar).ontcijfer('utf-8', fouten='vervang')
print(Van: {sender} | Onderwerp: {subject}')De pijnpunten van imaplib: ruwe byte-antwoorden vereisen zorgvuldige tuple-indexering (data[0][1]), koppen zijn RFC 2047-gecodeerd en moeten decode_header(), meerdelige MIME-lichamen vereisen een volledige lopen(), en er zijn geen ingebouwde hulpmiddelen voor UID's versus volgnummers. Overweeg voor productie-workloads IMAPClient (paragraaf 4) of een geünificeerde IMAP API in plaats daarvan.
Verder gaan: IMAPClient voor Productie
Zodra je met imaplib in productie gaat, merk je al snel de kwetsbare response parsing, inconsistente UID-handling en het ontbreken van hulpmiddelen voor veelvoorkomende taken. IMAPClient is een Pythonic wrapper die deze ruwe randjes gladstrijkt en tegelijkertijd dicht bij de IMAP-specificatie blijft.
data[0][1]uid() (wrapper handmatig)gebruik_uid=True)zoek(), ophalen(), verplaats(), kopiëren() APIidle() / idle_check()van imapclient importeer IMAPClient
importeer mooi afdrukken
# Verbinding maken met IMAPClient (use_uid=True is standaard ingesteld)
server = IMAPClient('imap.gmail.com', ssl=Waar, gebruik_uid=Waar)
server.Login('user@gmail.com', 'app-wachtwoord')
# Selecteren en zoeken
server.map_selecteren('POSTVAK')
berichten = server.zoek(['ONGEZIEN'])
print({len(messages)} ongelezen berichten')
# Fetch - retourneert een gestructureerd woordenboek, geen ruwe bytes
response = server.fetch(berichten[:10], ['ENVELOP', 'LICHAMAAM[]', 'VLAGGEN'])
voor uid, gegevens in antwoord.artikelen():
envelop = gegevens[ENVELOPE']
print(UID {uid}: {envelope.subject}')
# Berichten naar map verplaatsen
server.verplaatsen(berichten[:5], 'Archief')
# IDLE - wachten op nieuwe berichten (maximaal 29 minuten bij Gmail)
server.inactief()
reacties = server.idle_check(tijdslimiet=60)
print('IDLE-reactie:', antwoorden)
server.idle_klaar()
server.uitloggen()Zelfs IMAPClient vereist handmatig tokenbeheer via OAuth en omgang met meerdere providers. Unipile abstraheert dit alles – OAuth-vernieuwingen, provider-specifieke eigenaardigheden, IDLE-herverbindingen – achter één enkele REST API. Bekijk onze complete e-mail API gids.
Bouw het met UnipileOAuth XOAUTH2 in Python: Gmail en Microsoft 365
Basale wachtwoordauthenticatie is dood voor grote providers. Gmail heeft het sinds mei 2022 geblokkeerd voor standaardaccounts. Microsoft 365 heeft Basic Auth in september 2024 afgeschaft voor IMAP. XOAUTH2 (een OAuth 2.0 SASL-mechanisme) is nu de enige productie-geschikte manier om een Python IMAP-client te authenticeren. Voor de volledige uitleg van de OAuth-flow, zie onze OAuth e-mail API-handleiding.
XOAUTH2 is een SASL-authenticatiemechanisme dat een OAuth Bearer-token codeert in een base64-string met het volgende formaat: gebruiker={email}\x01auth=Bearer {token}\x01\x01. Deze tekenreeks wordt doorgegeven aan imaplib.IMAP4_SSL.authenticate('XOAUTH2', callback). De callback retourneert de base64-gecodeerde string. U bent verantwoordelijk voor het verkrijgen en vernieuwen van de OAuth-toegangstoken via Google- of Microsoft-identiteit eindpunten voordat u de IMAP-verbinding maakt. Zie onze [documentatie](https://cloud.google.com/resource-manager/reference/rest/v1/projects/create) voor de vereiste Gmail-scopes. Gmail API scopes handleiding.
importeer imaplib, base64, json
van google.oauth2.credentials importeer Geloofsbrieven
van google.auth.transport.requests importeer Verzoek
def build_xoauth2_string(user_e-mailadres, toegangstoken):
"XOAUTH2 SASL-string voor IMAP-authenticatie bouwen."
auth_string = user={user_email}\x01auth=Bearer {access_token}\x01\x01'
return base64.b64encode(auth_string.coderen('ascii'))
def get_geldig_token(creds_dict):
"Vernieuw token indien verlopen met behulp van de google-auth bibliotheek."
credit = Inloggegevens.van_geautoriseerde_gebruikersinformatie(geloofsbrieven_dict)
als credits.verlopen en creds.refresh_token:
credits.verversen(Verzoek())
return creds.token
# Vereiste IMAP-toegang tot Gmail: https://mail.google.com/
gebruikers_email = 'user@gmail.com'
toegangstoken = get_geldig_token(geloofsbrieven_dict)
e-mail = imaplib.IMAP4_SSL('imap.gmail.com')
auth_string = build_xoauth2_string(user_email, toegangstoken)
e-mail.authenticeren('XOAUTH2', lambda x: auth_string)
# Gebruik het nu zoals gewoonlijk
e-mail.select('POSTVAK')
_, id's = e-mail.zoek(Niets, 'ALLE')
print(Totaal aantal berichten: {len(ids[0].split())}')https://mail.google.com/ bereik (niet gmail.alleenlezen alleen - die scope geeft geen IMAP-toegang). Zie onze Gmail API scopes handleiding voor een volledige uitsplitsing. Je moet ook IMAP inschakelen in de Gmail-instellingen en een Google Cloud OAuth 2.0-client-ID gebruiken met de juiste omleidings-URI.
importeer imaplib, base64
importeer msal
def build_xoauth2_string(user_e-mailadres, toegangstoken):
auth_string = user={user_email}\x01auth=Bearer {access_token}\x01\x01'
return base64.b64encode(auth_string.coderen('ascii'))
# MSAL - Microsoft-authenticatiebibliotheek voor Python
CLIENT_ID = 'uw-azure-app-client-id'
TENANT_ID = 'uw-tenant-id'
# Scope voor IMAP-toegang (Outlook / Microsoft 365)
REIKWIJDTE = ['https://outlook.office365.com/IMAP.AccessAsUser.All']
app = msal.PublicClientApplication(KLANT_ID, autoriteit=f'https://login.microsoftonline.com/{TENANT_ID}')
# Token ophalen (interactief of via een vernieuwingstoken)
resultaat = app.verkrijgen_token_met_autorisatie_code(code, scopes=SCOPE, redirect_uri=redirect_uri)
toegangstoken = resultaat['toegangstoken']
# Verbinding maken met Outlook IMAP via XOAUTH2
gebruikers_email = 'user@outlook.com'
e-mail = imaplib.IMAP4_SSL('outlook.office365.com')
auth_string = build_xoauth2_string(user_email, toegangstoken)
e-mail.authenticeren('XOAUTH2', lambda x: auth_string)
e-mail.select('POSTVAK')OAuth XOAUTH2 is meer dan 50 regels per provider. Unipile regelt token vernieuwing, XOAUTH2 handshake en provider-specifieke eigenaardigheden, zodat uw Python-code gericht kan blijven op bedrijfslogica - niet op authenticatiemechanismen.
Bouw je OAuth-stroomMulti-Provider Realiteitstest
Elke provider heeft zijn eigen authenticatie-eigenaardigheden, serveradressen en snelheidslimieten. Hier is wat uw Python IMAP-client voor elk moet afhandelen. Voor serverhostnamen en TLS-poortdetails, zie onze speciale IMAP-server verbindingshandleiding.
https://mail.google.com/IMAP.ToegangAlsGebruiker.AlleHet ondersteunen van meerdere providers betekent dat je aparte authenticatiestromen, serverconfiguraties en werkmethoden voor specifieke situaties moet onderhouden. Unipile normaliseert Gmail, Outlook en elke IMAP-server tot één API. Lees onze e-mail API providers vergelijking voor context.
Bouw multi-provider e-mailWanneer je IMAP volledig moet overslaan: Unificatie API-aanpak
Na het doorlopen van imaplib, IMAPClient en XOAUTH2, wordt één waarheid duidelijk: ruwe IMAP in Python vereist honderden regels boilerplate voor elke provider die je ondersteunt. Unipile is een geünificeerde IMAP API dat abstraheert dit allemaal naar één REST-interface. Je koppelt gebruikersaccounts (Gmail, Outlook of een willekeurige IMAP-server) met OAuth, en Unipile regelt elk protocoldetail namens jou.
# 1. OAuth-token ophalen (meer dan 50 regels)
# 2. XOAUTH2-string samenstellen
# 3. Verbinden + authenticeren
# 4. Selecteer map
# 5. Berichten zoeken
# 6. Ruwe bytes ophalen
# 7. Analyseer tuple-gegevens[0][1]
# 8. RFC 2047-headers decoderen
# 9. MIME-onderdelen doornemen
# 10. Bevestigingselementen
# 11. Time-outs voor inactiviteit beheren
# 12. Opnieuw verbinden bij een fout
# 13. Herhaal dit voor Outlook...
# 14. Herhaal dit voor IMAP-servers...importeer verzoekt
# E-mails ophalen van elk gekoppeld account
r = verzoeken.krijgen(
'https://api6.unipile.com/api/v1/emails',
headers={'X-API-KEY': api_key},
params={'account_id': account_id}
)
e-mails = r.json()['artikelen']
# werkt met Gmail, Outlook en alle IMAP-accountsUnipile beheert de acquisitie, vernieuwing en het verlopen van XOAUTH2-tokens voor Gmail en Outlook. Geen MSAL of google-auth setup nodig in uw code.
Geen ruwe bytes, geen tuple unpacking, geen RFC 2047-decodering. Elke e-mail komt terug als schone, gestructureerde JSON met geparseerde headers, body en bijlagen.
In plaats van inactieve sessies en herverbindingen te beheren, stuurt Unipile nieuwe e-mailgebeurtenissen naar uw webhook-eindpunt. Geen polling, geen socketbeheer.
Eén API-endpoint bedient Gmail, Outlook en elke IMAP-server. Voeg nieuwe providers toe door accounts te koppelen - geen codewijzigingen aan jouw kant vereist.
Unipile dekt de volledige e-maillevenscyclus. Lezen, zoeken, verplaatsen, markeren en verzenden - allemaal vanuit dezelfde API. Bekijk onze Python e-mail verzenden handleiding voor de verzendende kant.
Elke gebruiker koppelt zijn eigen account via OAuth. Unipile fungeert als een onafhankelijke technische tussenpersoon namens elke geauthenticeerde gebruiker - niet een gedeeld credential-pool.
Veelvoorkomende valkuilen in productie
Nadat een Python IMAP-client lokaal werkend is gekregen, onthult de productie randgevallen die stille gegevensverlies, verbindingsonderbrekingen of defecte tekencodering kunnen veroorzaken. Hier zijn de meest voorkomende problemen en hoe ze op te lossen.
Microsoft heeft de verwijdering van Basic Authentication voor IMAP op alle Microsoft 365 tenants voltooid in September 2024. Elke Python-code die wordt gebruikt mail.login(gebruiker, wachtwoord) tegen outlook.office365.com zal nu ontvangen AUTHENTICATIE mislukt. Migratie naar XOAUTH2 (sectie 5) is verplicht voor alle Microsoft 365 / Outlook IMAP-integraties. Exchange on-premises implementaties kunnen Basic Auth nog steeds ondersteunen, afhankelijk van de serverconfiguratie.
Gmail beëindigt IDLE-verbindingen stilzwijgend na ongeveer 29 minuten. Als je code de IDLE-sessie niet vernieuwt, stoppen nieuwe berichten met aankomen zonder dat er een uitzondering wordt gegenereerd.
idle_klare() elke 25 minuten, bel dan onmiddellijk idle() nog een keer. Gebruik select_folder('POSTVAK', readonly=False) om het aantal berichten opnieuw te controleren bij herverbinding.E-mailheaders zoals Onderwerp en Van gebruiken RFC 2047-codering (Dit is het begin van een e-mailonderwerp. Het geeft aan dat de tekst die volgt gecodeerd is met UTF-8 en Base64. Het gebruik van "=?UTF-8?B?..." is de standaard manier om dergelijke onderwerpen in e-mails te formatteren.
Om je te helpen, zou ik de rest van de e-mailonderwerpregel nodig hebben om het daadwerkelijk te decoderen. Als je de hele regel deelt, kan ik het voor je vertalen.. Bellen str(msg['Onderwerp']) direct op een byte-waarde retourneert garbage of veroorzaakt een fout UnicodeDecodeError.
email.header.decode_header() en codeer elk deel expliciet. Door fouten='vervang' naar .decode() om crashes te voorkomen bij verkeerd gevormde headers.Bijlagen bevinden zich in geneste MIME-onderdelen. Bellen ophalen_payload() op een meerdelig bericht retourneert een lijst met delen, niet de inhoud. In-line afbeeldingen zijn Content-Disposition: inline en heb een Content-ID.
msg.loop(), controleer get_content_disposition() voor bijlage, en bel get_payload(decode=True) aanhulsels om gedecodeerde bytes te krijgen.imaplib.IMAP4_SSL instanties zijn NIET thread-safe. Het gebruik van één verbinding over meerdere threads veroorzaakt rommelige antwoorden. Het aanmaken van een nieuwe verbinding per verzoek is duur en beperkt in snelheid.
aioimaplib. Implementeer altijd exponentiële backoff voor herverbindingspogingen na IMAP4.afbreken uitzonderingen.Gmail beperkt IMAP-verbindingen tot 15 gelijktijdige verbindingen per account en handhaaft bandbreedtelimieten (2.500 MB/dag via IMAP). Het opvragen van volledige RFC822-body's op schaal zal deze limieten snel bereiken.
RFC822.HEADER), dan lichamen selectief ophalen. Gebruik BODY.PEEK[] in plaats van RFC822 om handmatige markering als gelezen te voorkomen. Implementeer exponentiële backoff op [OVERQUOTA] reacties.Toegangstokens van Google en Microsoft verlopen na 3.600 seconden (1 uur). Als uw IMAP-sessie nog open is wanneer het token verloopt, mislukt het volgende commando na afloop stilzwijgend of retourneert het NEE.
verloopt_op timestamp. Controleer voor elke batchbewerking of de token binnen 5 minuten verloopt en vernieuw proactief. Sla vernieuwingstokens veilig op. Dit is precies wat Unipile handelt automatisch.Het vermijden van alle 6 de valkuilen vereist aanzienlijke infrastructuur. Unipile regelt IDLE herverbindingen, tokenvernieuwing, snelheidsbeperking en normalisatie van meerdere providers - zodat u zich kunt richten op uw productlogica. Onderdeel van onze volledige e-mail API gids.
Bouwen zonder de valkuilenVeelgestelde vragen
Veelgestelde vragen over Python IMAP-clients, imaplib, IMAPClient, XOAUTH2-authenticatie en wanneer je in plaats daarvan een unified email API kunt gebruiken.
imap.gmail.com op poort 993 met imaplib.IMAP4_SSL. Echter, Gmail ondersteunt geen gewone gebruikersnaam/wachtwoord-aanmeldingen meer voor apps van derden. Je moet gebruiken OAuth XOAUTH2 authenticatie met een toegangstoken verkregen van Google via de https://mail.google.com/ bereik. Zie onze Gmail API scopes handleiding voor de volledige reikwijdte. App-wachtwoorden werken nog steeds voor persoonlijke rekeningen met tweestapsverificatie, maar OAuth is vereist voor toepassingen.gebruiker={email}\x01auth=Bearer {token}\x01\x01 in base64, geef het vervolgens door aan imaplib.IMAP4_SSL.authenticate('XOAUTH2', callback). Dit vervangt de verouderde Basic Auth-login voor Gmail en Microsoft 365. Volledige implementatievoorbeelden staan in sectie 5 van deze handleiding. Zie ook onze OAuth e-mail API-handleiding.base64(f'user={email}\x01auth=Bearer {token}\x01\x01'). 3) Roepen mail.authenticate('XOAUTH2', lambda x: auth_string). Voor Gmail, gebruik de google-authenticatie bibliotheek om het vernieuwen van tokens te beheren. Gebruik voor Outlook/Microsoft 365 de msal Python-bibliotheek. Beide vereisen het registreren van een OAuth-toepassing in Google Cloud Console of Azure AD. De volledige imap Python OAuth-code staat in Sectie 5 hierboven.zoek()/ophalen()/verplaats() methoden, en bevatten ingebouwde IDLE-ondersteuning. Beide vereisen dat u OAuth-tokentoezicht zelf afhandelt. Geen van beide is asynchroon - overweeg voor asyncio-gebaseerde pijplijnen aioimaplib. Installeer IMAPClient met pip install imapclient.outlook.office365.com op poort 993 met imaplib.IMAP4_SSL. Sinds september 2024 is Basic Auth uitgeschakeld voor Microsoft 365 - u moet XOAUTH2 gebruiken. Registreer een Azure AD-toepassing, vraag de IMAP.ToegangAlsGebruiker.Alle toestemming, verkrijg een toegangstoken met behulp van de msal Python-bibliotheek, daarna authenticeren met mail.authenticate('XOAUTH2', ...). Voor persoonlijke Outlook.com-accounts geldt dezelfde OAuth-stroom. Zie voor servergegevens en TLS-configuratie onze IMAP-server verbindingshandleiding.outlook.office365.com:993. Echter, sinds september 2024 heeft Microsoft Basic Authentication voor IMAP op Microsoft 365-tenants volledig uitgeschakeld. U moet OAuth 2.0 gebruiken met het XOAUTH2 SASL-mechanisme. Uw Azure AD-beheerder moet mogelijk ook IMAP-toegang inschakelen in het Exchange-beheercentrum. Een alternatief is om de Microsoft Graph API (REST) die IMAP volledig vermijdt en rijkere metadata biedt.server.idle() om de IDLE-modus te activeren, daarna server.idle_check(timeout=60) wachten op gebeurtenissen. Gmail verbreekt stilletjes de verbinding na ongeveer 29 minuten, dus u moet verlengen: bel server.idle_done() om de 25 minuten, en dan server.idle() opnieuw. Bij het gebruik van de onbewerkte imaplib vereist IDLE handmatig beheer op socketniveau – wat aanzienlijk complexer is. Voor realtime e-mail in een productieomgeving is een op webhooks gebaseerde aanpak (zoals Unipile die biedt) betrouwbaarder dan het onderhouden van IDLE-sessies.aioimaplib De library biedt een asyncio-compatibele IMAP4-client voor Python. Het ondersteunt standaard IMAP-commando's en IDLE in een asynchrone context, waardoor het geschikt is voor pipelines met hoge concurrentie waarbij u veel postbussen tegelijkertijd beheert. Echter, aioimaplib heeft een kleinere community dan imaplib of IMAPClient, en OAuth-ondersteuning vereist nog steeds handmatige XOAUTH2-implementatie. Voor teams die prioriteit geven aan ontwikkelsnelheid boven fijngranige controle, levert een REST-gebaseerde uniforme API real-time e-mail via webhooks zonder asynchrone socketbeheer.