Python'da IMAP API: imaplib, IMAPClient, XOAUTH2 OAuth Kılavuzu (2026)

IMAP API Python Kılavuzu

IMAP API'si Pythonimaplib, IMAPClient & OAuth XOAUTH2 Rehberi

2026'da Python IMAP e-posta istemcileri oluşturmak için eksiksiz bir kılavuz: stdlib imaplib temellerinden IMAPClient üretim desenlerine, Gmail ve Outlook için OAuth XOAUTH2 kimlik doğrulamasına ve birleşik bir e-posta API'sinin sizi karmaşıklıktan ne zaman tamamen kurtarabileceğine kadar.

imap_client.py
İthalat imaplib, eposta itibaren e-posta.başlık İthalat başlığı_çöz # OAuth ile bağlan XOAUTH2 posta = imaplib.IMAP4_SSL('imap.gmail.com') auth_str = build_xoauth2(kullanıcı, jeton) posta.kimlik doğrula('XOAUTH2', lambda x: kimlik_doğrulama_dizesi) # Okunmamış mesajları getir posta.seç('GELEN KUTUSU') _, kimlikler = posta.arama(Hiçbiri, 'GÖRÜLMEMİŞ') için kimlik numarası içinde kimlikler[0].bölmek(): _, veri = posta.fetch(kullanıcı kimliği, '(RFC822)') mesaj = e-posta.bayttan_mesaj(veri[0][1])
Gmail, Outlook, IMAP'ten e-posta alınıyor...
Tanım

IMAP Python İstemcisi Nedir?

Bir IMAP API Python istemci, e-posta iletilerini okumak, aramak, düzenlemek ve eşitlemek için IMAP4 protokolünü (RFC 3501) kullanarak bir posta sunucusuyla iletişim kuran herhangi bir Python programıdır. Yalnızca e-posta gönderen SMTP'nin aksine IMAP, uygulamanıza uzak bir posta kutusuna çift yönlü erişim sağlar: üstbilgileri alabilir, gövdeleri okuyabilir, işaretleri ayarlayabilir, iletileri klasörler arasında taşıyabilir ve IMAP IDLE kullanarak yeni gelenleri gerçek zamanlı olarak dinleyebilirsiniz.

Hızlı Tanım

İMAP (İnternet Mesaj Erişim Protokolü) uzak bir sunucuda depolanan e-postaları almak ve yönetmek için istemcilere izin veren standart bir protokoldür. Bir Python IMAP istemcisi, TLS port 993 üzerinden bağlanır, kimlik doğrulaması yapar (Temel veya OAuth XOAUTH2) ve ardından iletileri almak, aramak, işaretlemek ve düzenlemek için IMAP komutları verir. Python, üç düzeyde soyutlama sunar: standart kütüphane imaplib, daha üst düzey IMAPİstemci wrapper, ve tamamen asenkron seçenekler gibi aioimaplib. IMAP mimarisi ve kullanım örnekleri hakkında tam bir genel bakış için lütfen şuralara bakınız IMAP API geliştirici kılavuzu.

E-posta Senkronizasyonu

CRM, ATS veya yardım masanıza kullanıcı gelen kutularını senkronize edin. Python IMAP, tam bir posta sunucusu yönetmeden yeni iletileri veritabanınıza çekmenize veya göndermenize (IDLE) olanak tanır.

Otomasyon ve Yapay Zeka Borulama Hatları

Python kullanarak gelen e-postaları ayıklayın, sınıflandırın ve yönlendirin. IMAP istemciniz bir işlem kuyruğuna beslenir: fatura ayrıştırma, bilet oluşturma, potansiyel müşteri puanlaması veya LLM özetlemesi.

Geliştirici Araçları

E-posta gönderme işlemlerini test edin, "gelen kutusu sıfır" araçları oluşturun veya teslim edilebilirliği denetleyin. Python IMAP, kullanıcılarınızın gördüğü aynı posta kutusuna programlı erişim sağlar. Bizimkilere göz atın e-posta API kılavuzu tüm ekosistem için.

Kütüphane Karşılaştırması

3 Python IMAP Yığın Seçeneği

Doğru Python IMAP kütüphanesini seçmek kullanım alanınıza bağlıdır: hızlı bir betik, üretim hizmeti veya eşzamansız bir işlem hattı. Her biri için kod örneklerine dalmadan önce ana seçeneklerin karşılaştırması burada yer almaktadır.

Kütüphane Tip OAuth Desteği Asenkron Ayrıştırma Yardımcıları İçin En İyisi
imaplib Stdlib (sıfır bağımlılık) El Kitabı Hayır Minimal Basit betikler, harici bağımlılık yok
IMAPİstemci Üçüncü taraf sarmalayıcı El Kitabı Hayır İyi Üretim IMAP async olmadan
aioimaplib Asenkron kütüphane El Kitabı Evet Sınırlı asyncio işlem hatları & büyük ölçekte BOŞTA
Unipile APIEn iyisi Birleşik REST/SDK Yerleşik Evet Tam Çoklu sağlayıcıyla ölçekte üretim
imaplib — Stdlib
OAuth:Manuel kurulum
AsenkronHayır
AyrıştırmaMinimal
En iyisi:Basit betikler, sıfır bağımlılık
IMAPİstemci — Paketleyici
OAuth:Manuel kurulum
AsenkronHayır
Ayrıştırmaİyi yardımcılar
En iyisi:Üretim IMAP, eşzamansız değil
aioimaplib — Asenkron
OAuth:Manuel kurulum
AsenkronEvet (asyncio)
AyrıştırmaSınırlı
En iyisi:asyncio işlem hatları, büyük ölçekte BOŞTA
Unipile APIEn iyisi
OAuth:Yerleşik
AsenkronEvet
AyrıştırmaTam yapılandırılmış JSON
En iyisi:Çoklu sağlayıcıyla ölçekte üretim

IMAP karmaşasını atlayın. Unipile, Gmail, Outlook ve herhangi bir IMAP sunucusu için tek bir entegrasyon sağlayarak imaplib, OAuth ve çoklu sağlayıcı mantığını tek bir REST API'de soyutlar.

Ücretsiz oluşturmaya başla
Kod Eğitimi

Hızlı Başlangıç: imaplib ile IMAP'e Bağlanma

Python standart kütüphanesi şunlarla birlikte gelir imaplib - kurulum gerektirmez. Bağlantıdan vücut çekimine kadar, zorlu noktalar hakkında dürüst yorumlarla eksiksiz bir adım adım anlatım.

1
Bağlan ve kimlik doğrula

Kullanım imaplib.IMAP4_SSL şifreli bir bağlantı için 993 numaralı bağlantı noktasında. Gmail ve Outlook için, sunucu adreslerini bizim IMAP sunucu bağlantı kılavuzu. Temel Kimlik Doğrulama (parola), henüz izin veren IMAP sunucularında çalışır - ancak Gmail ve Outlook artık OAuth XOAUTH2'yi gerektirir (Bölüm 5'te ele alınmıştır).

connect.py
İthalat imaplib #'yi Gmail IMAP'a bağla (TLS bağlantı noktası 993) posta = imaplib.IMAP4_SSL('imap.gmail.com', 993) # Temel kimlik doğrulama (sadece uygulama şifresi – OAuth tercih edilir) posta.Giriş('user@gmail.com', 'uygulama parolası') # Tüm posta kutularını listele durum, posta kutuları = posta.list() için kutu içinde posta kutuları printkutu.çöz('utf-8')) posta.çıkış()
2
Bir klasör seçin ve mesajları arayın

Bu seç() Çağrı bir posta kutusu açar ve mesaj sayısını döndürür. ara() mesaj kimliklerinin boşlukla ayrılmış bayt dizisini döndürür - UID'ler değil. Manuel olarak kod çözmeniz ve ayırmanız gerekir.

search.py
# Gelen Kutusu'nu (veya herhangi bir klasörü) seçin durum, sayı = posta.seç('GELEN KUTUSU') print(Mesajlar: {count[0].decode()}') # Görünmeyen mesajları ara durum, mesaj_kimlikleri = posta.arama(Hiçbiri, 'GÖRÜLMEMİŞ') kimlikler = msg_ids[0].bölmek() print(Okunmamış sayı: {len(ids)}') # Gönderene göre arama _, kimliklerden = posta.arama(Hiçbiri, 'İLE', 'boss@company.com') # Tarih aralığına göre arama , son = posta.arama(Hiçbiri, 'DANİ', '01-Oca-2026')
3
Başlıkları al ve gövdeyi ayrıştır

İşte burası imaplib karışır. Ham yanıt, bayt içeren bir demet listesidir. İndekslemeniz gerekir veri[0][1] ham mesaja ulaşmak, sonra onu şuraya geçirmek için e-posta Ayrıştırma için modül. Başlıklar RFC 2047 ile kodlanmıştır ve gereklidir decode_header().

fetch_body.py
İthalat e-posta itibaren e-posta.başlık İthalat başlığı_çöz fonksiyon diziyi_çöz(değer): "RFC 2047 kodlu başlık değerini çöz." parçalar = başlığı_çöz(değer) çözülmüş = [] için parça, şifrelemek içinde parçalar eğer isinstanceparça, bayt): çözülmüş.eklekısım.çöz(şifrele veya 'utf-8', hatalar='değiştir')) aksi takdirde: çözülmüş.ekleparça return ' '.katıl(çözülmüş) için kimlik numarası içinde ids[-]5:]: # son 5 mesaj _, veri = posta.fetch(kullanıcı kimliği, '(RFC822)') çiğ = veri[0][1] # tuple'larının açılmasındaki zorluklar mesaj = e-posta.bayttan_mesaj(ham) konu = diziyi_çöz(mesaj['Konu'] veya '') sender = diziyi_çöz(mesaj['Dan'] veya '') # Walk MIME bileşenleri (düz metin gövdesi için) eğer mesaj.çok parçalı(): için parça içinde mesaj.yürümek(): eğer parça.içerik_türünü_al() == 'metin/düz': vücut = parça.yükü_al(çöz=Doğru).çöz('utf-8', hatalar='değiştir') print('{sender} Tarafından | Konu: {konu}')

imaplib'in can sıkıcı yönleri: ham bayt yanıtları dikkatli demet indekslemesi gerektirirveri[0][1]), başlıklar RFC 2047 kodludur ve decode_header(), çok parçalı MIME gövdeleri tam bir yürümek, ve UID'lere karşı sıra numaraları için yerleşik yardımcılar yoktur. Üretim iş yükleri için IMAPClient'ı (Bölüm 4) veya bir birleştirilmiş IMAP API yerine.

Üretim Kütüphanesi

Daha İleriye Gitmek: Üretim İçin IMAPClient

imaplib'i üretime aldığınızda, yanıt ayrıştırmasının kırılganlığını, tutarsız UID kullanımını ve yaygın görevler için yardımcıların bulunmadığını hızla fark edersiniz. IMAPClient, IMAP spesifikasyonuna yakın kalarak bu pürüzleri gideren Pythonik bir sarmalayıcıdır.

IMAP kütüphanesi üretimde neden çöküyor
Yanıtlar ham bayt demetleridir - kırılgan demet indeksleme veri[0][1]
Varsayılan olarak UID'ye göre alma yok (kullan uid() manuel olarak sarmalayıcı)
Yerleşik MIME ayrıştırma veya gövde çıkarma yardımcısı yok
IDLE, elle soket yönetimi gerektirir
RFC 2047 başlık çözme sizin sorununuzdur
IMAPClient size şunları sunar
Yapılandırılmış sözlük yanıtları - demet açma gerekmez
Varsayılan olarak UID modu (kullan_uid=True)
Temizleyici ara(), fetch(), hareket et(), kopyala() API
Dahili IDLE desteği ile boşta / boşta_kontrol()
Tüm IMAP sunucularıyla çalışır - Gmail, Outlook, özel IMAP
imapclient_example.py
itibaren imapistemci İthalat IMAPİstemci İthalat pprint #, IMAPClient ile bağlan (varsayılan olarak use_uid=True) sunucu = IMAPİstemci('imap.gmail.com', ssl=Doğru, kullanıcı_uid=Doğru) sunucu.Giriş('user@gmail.com', 'uygulama parolası') # Seç ve ara sunucu.klasör_seç('GELEN KUTUSU') mesajlar = sunucu.arama(['GÖRÜLMEMİŞ']) print({len(messages)} okunmamış mesaj') # Fetch - ham baytlar yerine yapılandırılmış bir sözlük döndürür response = sunucu.fetch(mesajlar[:10], ['ZARF', 'BODY[]', 'BAYRAKLAR']) için uid, veri içinde cevap.eşyalar(): zarf = veri[Zarf'] print(UID {uid}: {envelope.subject}') # Mesajları klasöre taşı sunucu.taşımak(mesajlar[:5], 'Arşiv') # BEKLEME - yeni mesajları bekle (Gmail'de en fazla 29 dakika) sunucu.boşta() yanıtlar = sunucu.boşta_kontrolsüre aşımı=60) print('BOŞ yanıtı:', yanıtlar) sunucu.boşta_tamamlandı() sunucu.çıkış()

IMAPClient bile OAuth jetonu yönetimini manuel olarak yapmayı ve birden fazla sağlayıcıyla ilgilenmeyi gerektirir. Unipile, tüm bunları - OAuth yenileme, sağlayıcıya özgü davranışlar, IDLE yeniden bağlantıları - tek bir REST API'nin arkasında soyutlar. Tamamını görmek için e-posta API kılavuzu.

Unipile ile oluşturun
OAuth ve XOAUTH2

Python'da OAuth XOAUTH2: Gmail ve Microsoft 365

Temel parola kimlik doğrulaması büyük sağlayıcılar için ölüdür. Gmail, standart hesaplar için Mayıs 2022'den beri bunu engelledi. Microsoft 365, Eylül 2024'te IMAP için Temel Kimlik Doğrulamayı kullanımdan kaldırdı. XOAUTH2 (bir OAuth 2.0 SASL mekanizması) artık üretim düzeyinde bir Python IMAP istemcisini kimlik doğrulamak için tek yoldur. Tam OAuth akışı açıklaması için lütfen OAuth e-posta API kılavuzu.

XOAUTH2 nasıl çalışır

XOAUTH2, OAuth Bearer belirtecini şu biçimde bir base64 dizesine kodlayan bir SASL kimlik doğrulama mekanizmasıdır: kullanıcı={email}\x01auth=Bearer {token}\x01\x01. Bu dize şuna aktarılır imaplib.IMAP4_SSL.authenticate('XOAUTH2', callback). Geri çağırma, base64 ile kodlanmış dizeyi döndürür. IMAP bağlantısı yapmadan önce OAuth erişim jetonunu Google veya Microsoft kimlik uç noktaları aracılığıyla almaktan ve yenilemekten siz sorumlusunuz. Gerekli Gmail kapsamları için bkz. Gmail API kapsamları kılavuzu.

Gmail Gmail
Görünüm Microsoft 365
gmail_xoauth2.py
İthalat imaplib, base64, json itibaren google.oauth2.kimlik bilgileri İthalat Kimlik Bilgileri itibaren google.auth.transport.requests İthalat Talep fonksiyon build_xoauth2_string(kullanıcı_e_postası, erişim_jetonu): "IMAP kimlik doğrulaması için XOAUTH2 SASL dizesi oluştur.""" kimlik doğrulama dizesi = user={user_email}\x01auth=Bearer {access_token}\x01\x01' return base64.b64encode(yetkilendirme_dizesi.kodlamak('ascii')) fonksiyon geçerli_belirteç_al(kimlik_bilgileri_sözlüğü): "Google-Auth kütüphanesini kullanarak yenileme jetonu süresi dolduğunda yenileme." kimlik bilgileri = Kimlik Bilgileri.yetkilendirilmiş_kullanıcı_bilgileri(kimlik_bilgileri_sözlüğü) eğer kimlik bilgileri.geçmiş ve creds.yenileme_belirteci: kimlik bilgileri.yenile(Talep()) return kimlik bilgileri.jeton # için gerekli Gmail IMAP kapsamı: https://mail.google.com/ kullanici_e_postasi = 'user@gmail.com' erişim_belirteci = geçerli_belirteç_al(kimlik_bilgileri_sözlüğü) posta = imaplib.IMAP4_SSL('imap.gmail.com') kimlik doğrulama dizesi = build_xoauth2_string(kullanıcı_e_postası, erişim_anahtarı) posta.kimlik doğrula('XOAUTH2', lambda x: kimlik_dizesi # Artık normal şekilde kullanın posta.seç('GELEN KUTUSU') _, kimlikler = posta.arama(Hiçbiri, 'HEPSİ') print(Toplam mesaj: {ids[0].split().length}')
Gmail kapsam gereksinimi: Erişim belirteci, ... ile elde edilmelidir https://mail.google.com/ kapsam (değil gmail.yalnızcaoku Yalnız - bu kapsam, IMAP erişimi sağlamaz). Bizim Gmail API kapsamları kılavuzu tam bir döküm için. Ayrıca Gmail ayarlarında IMAP'i etkinleştirmeniz ve doğru yönlendirme URI'sine sahip bir Google Cloud OAuth 2.0 istemci kimliği kullanmanız gerekir.
outlook_xoauth2.py
İthalat imaplib, base64 İthalat msal fonksiyon build_xoauth2_string(kullanıcı_e_postası, erişim_jetonu): kimlik doğrulama dizesi = user={user_email}\x01auth=Bearer {access_token}\x01\x01' return base64.b64encode(yetkilendirme_dizesi.kodlamak('ascii')) # MSAL - Python için Microsoft Kimlik Doğrulama Kütüphanesi MÜŞTERİ_KODU = 'azure-uygulama-istemci-kimliğiniz' KİRACI_KODU = 'kiracı-kimliğiniz' IMAP erişimi için # Ekranı (Outlook / Microsoft 365) KAPSAM = ['https://outlook.office365.com/IMAP.AccessAsUser.All'] uygulama = MSAL.PublicClientApplication(CLIENT_ID, yetki=https://login.microsoftonline.com/{TENANT_ID}') # Jetonu al (etkileşimli olarak veya yenileme jetonu aracılığıyla) sonuç = uygulama.yetkilendirme_kodu_ile_token_edin(kod, kapsamlar=SCOPE, yönlendirme_url=redirect_uri) erişim_belirteci = sonuç['erişim_belirteci'] #, XOAUTH2 ile Outlook IMAP'a bağlan kullanici_e_postasi = 'user@outlook.com' posta = imaplib.IMAP4_SSL('outlook.office365.com') kimlik doğrulama dizesi = build_xoauth2_string(kullanıcı_e_postası, erişim_anahtarı) posta.kimlik doğrula('XOAUTH2', lambda x: kimlik_dizesi posta.seç('GELEN KUTUSU')
Microsoft 365 IMAP notu: Microsoft, Eylül 2024"ten itibaren tüm Microsoft 365 kiracıları için IMAP'te Temel Kimlik Doğrulamayı devre dışı bıraktı. XOAUTH2 kullanmanız gerekmektedir. Bir Azure AD uygulaması kaydedin, "IMAP.AccessAsUser.All" iznini etkinleştirin ve belirteç edinimi için MSAL kullanın. IMAP'e alternatif olarak Microsoft Graph için bkz. Microsoft Graph OAuth e-posta kılavuzu.

OAuth XOAUTH2, sağlayıcı başına 50 satırı aşan bir kod yığınına sahip. Unipile, belirteç yenileme, XOAUTH2 anlaşması ve sağlayıcıya özgü tuhaflıkları ele alır, böylece Python kodunuz iş mantığına odaklanır, kimlik doğrulama altyapısına değil.

OAuth akışınızı oluşturmak
Sağlayıcı Matrisi

Çoklu-Sağlayıcı Gerçeklik Kontrolü

Her sağlayıcının kendine özgü kimlik doğrulama tuhaflıkları, sunucu adresleri ve hız sınırlamaları vardır. Python IMAP istemcinizin her biri için işlemesi gerekenler şunlardır. Sunucu ana bilgisayar adları ve TLS bağlantı noktası ayrıntıları için özel IMAP sunucu bağlantı kılavuzu.

Gmail logosu
Gmail
imap.gmail.com:993
Kimlik DoğrulamaXOAUTH2 gerekli
Kapsam:https://mail.google.com/
BOŞTADesteklenen (maksimum 29 dakika)
Garip HuylarGmail etiketleri IMAP klasörlerine karşılık gelir. Ayarlardan IMAP'i etkinleştirin.
OAuth 2.0 istemcisi olan bir Google Cloud projesi gerektirir. Bkz. Gmail kapsamları kılavuzu kapsam detayları için.
Outlook logosu
Outlook / Microsoft 365
outlook.office365.com:993
Kimlik DoğrulamaXOAUTH2 gerekli
Kapsam:IMAP.ErişimKullanıcıOlarak.Tüm
BOŞTADesteklenen
Garip HuylarTemel Kimlik Doğrulama Eylül 2024'te devre dışı bırakılmıştır. M365 için Azure AD uygulaması + yönetici onayı gereklidir.
IMAP'a REST tabanlı alternatif için şuraya bakınız Microsoft Graph OAuth e-posta kılavuzu.
IMAP logosu
Genel IMAP
senin-sunucu:993
Kimlik DoğrulamaGiriş/parola TAMAM
BOŞTASunucuya göre değişir
Garip HuylarSunucuya özel klasör adlandırma, YETENEKLER farklılık gösterir, bazıları IDLE'a sahip değildir.
Örnekler:Fastmail, ProtonMail Köprüsü, Postfix/Dovecot kendi kendine barındırılan
Neredeyse tüm IMAP4rev1 sunucularını kapsar. Bakınız IMAP API kılavuzu tam liste için.
Yahoo Posta
imap.mail.yahoo.com:993
Kimlik DoğrulamaUygulama şifresi gerekli (üçüncü taraf için XOAUTH2 yok)
BOŞTADesteklenen
Yahoo, üçüncü taraf uygulamaları için XOAUTH2 desteğini kaldırdı. Yahoo Hesap Güvenliği ayarlarından uygulamaya özel bir parola oluşturun.
iCloud Posta
imap.mail.me.com:993
Kimlik DoğrulamaUygulama şifresi gerekli
BOŞTADesteklenen
Apple Kimliğinizde İki Faktörlü Kimlik Doğrulama etkinleştirilmelidir. appleid.apple.com adresinden uygulamaya özel bir şifre oluşturun.

Birden fazla sağlayıcıyı desteklemek, ayrı kimlik doğrulama akışları, sunucu yapılandırmaları ve özel sorun çözümleri sürdürmek anlamına gelir. Unipile, Gmail, Outlook ve herhangi bir IMAP sunucusunu tek bir API'de birleştirir. Bizi okuyun E-posta API Sağlayıcıları Karşılaştırması bağlam için.

Çoklu sağlayıcılı e-posta oluştur
Birleşik API Alternatifi

IMAP'ten Tamamen Ne Zaman Vazgeçilmeli: Birleşik API Yaklaşımı

imaplib, IMAPClient ve XOAUTH2'yi inceledikten sonra tek bir gerçek netleşiyor: Python'da ham IMAP, desteklediğiniz her sağlayıcı için yüzlerce satır kod gerektiriyor. Unipile, bir birleştirilmiş IMAP API bunu tek bir REST arayüzünde soyutlar. Kullanıcı hesaplarını (Gmail, Outlook veya herhangi bir IMAP sunucusu) OAuth ile bağlarsınız ve Unipile sizin adınıza her protokol ayrıntısını halleder.

Ham imaplib ile (sağlayıcı başına 50+ satır)
raw_imap.py
# 1. OAuth jetonu al (50+ satır) # 2. XOAUTH2 dizesini oluştur # 3. Bağlan ve kimlik doğrulama yap # 4. Klasörü seçin # 5. Mesajları ara # 6. Ham baytları al # 7. Tuple verilerini [0][1] olarak ayrıştır # 8. RFC 2047 başlıklarını çözümle # 9. MIME parçalarını yürü # 10. Tutamak ekleri # 11. Bekleme zaman aşımlarını yönetme # 12. Hata durumunda yeniden bağlan # 13. Outlook için de aynısını yapın... # 14. IMAP sunucuları için de aynısını tekrarlayın...
Unipile REST API ile (5 satır)
unipile_email.py
İthalat istekleri # Bağlı herhangi bir hesaptan e-postaları al r = istemler.olsun( 'https://api6.unipile.com/api/v1/e-postalar', başlıklar='X-API-ANAHTARI': api_anahtar}, parametresi={'hesap_kimliği': hesap_kimliği} ) e-postalar = r.json()['ürünler'] #, Gmail, Outlook ve tüm IMAP hesaplarıyla uyumludur
OAuth sizin için halledildi

Unipile, Gmail ve Outlook için XOAUTH2 token alımını, yenilenmesini ve geçerlilik süresini yönetir. Kodunuzda MSAL veya google-auth kurulumuna gerek yoktur.

Normalleştirilmiş JSON yanıtları

Ham bayt yok, tuple ayrıştırma yok, RFC 2047 kod çözme yok. Her e-posta ayrıştırılmış başlıklar, gövde ve eklerle birlikte temiz yapılandırılmış JSON olarak geri döner.

Gerçek zamanlı web kancaları

Yoksayılmış oturumları ve yeniden bağlantıları yönetmek yerine, Unipile yeni e-posta olaylarını webhook uç noktanıza iletir. Yoklama, yuva yönetimi yok.

Varsayılan olarak çoklu sağlayıcı

Tek bir API uç noktası Gmail, Outlook ve herhangi bir IMAP sunucusuna hizmet verir. Kod değişikliği yapmadan hesap bağlayarak yeni sağlayıcılar ekleyin.

E-postaları da gönder

Unipile, e-postanın tüm yaşam döngüsünü yönetir. Her şeyi aynı API üzerinden okuyabilir, arayabilir, taşıyabilir, işaretleyebilir ve gönderebilirsiniz. Bize göz atın Python ile e-posta gönderme rehberi gönderen taraf için.

Kullanıcı başına bağlı hesaplar

Kullanıcılarınızın her biri, OAuth aracılığıyla kendi hesaplarını bağlar. Unipile, paylaşılan bir kimlik bilgisi havuzu değil, kimliği doğrulanmış her kullanıcının adına bağımsız bir teknik aracılık yapar.

Üretim Zorlukları

Üretimde Sık Yapılan Hatalar

Yerel olarak çalışan bir Python IMAP istemcisi edindikten sonra, üretimde sessiz veri kaybına, bağlantı kopmalarına veya bozuk karakter kodlamasına neden olabilecek uç durumlarla karşılaşılır. İşte en yaygın sorunlar ve bunları nasıl çözeceğiniz.

2026 Kırılma Değişikliği: Microsoft Temel Kimlik Doğrulama IMAP Yaşam Sonu

Microsoft, tüm Microsoft 365 kiracıları için IMAP'de Temel Kimlik Doğrulama'yı kaldırma işlemini tamamladı Eylül 2024. Python kodu kullanan mail.girisyap(kullanici, sifre) karşı outlook.office365.com artık alacak Kimlik doğrulama başarısız oldu. Tüm Microsoft 365 / Outlook IMAP entegrasyonları için XOAUTH2'ye geçiş (Bölüm 5) zorunludur. Şirket içi Exchange dağıtımları, sunucu yapılandırmasına bağlı olarak Temel Kimlik Doğrulamayı hala destekleyebilir.

01
IMAP IDLE zaman aşımı (Gmail'de 29 dakika)

Gmail, IDLE bağlantılarını yaklaşık 29 dakika sonra sessizce sonlandırır. Kodunuz IDLE oturumunu yenilemezse, herhangi bir istisna yükseltilmeden yeni mesajların gönderilmesi durur.

Düzelt: Bir zamanlayıcı ayarla boşta_tamamlandı() her 25 dakikada bir, sonra hemen ara boşta Tekrar. Kullan INBOX'u seç(salt-okunur=Yanlış) yeniden bağlandığında mesaj sayısını yeniden kontrol etmek.
02
RFC 2047 karakter kümesi kod çözme hataları

Konu ve Gönderen gibi e-posta başlıkları RFC 2047 kodlaması kullanırİngilizce'den Türkçeye çeviri yapamam.Çağrı Yapılıyor msg['Konu'].toString() Bays değerine doğrudan bir şey döndürmek çöp veya yükseltir. UnicodeDecodeError.

Düzelt: Her zaman kullan email.header.decode_header() ve her bölümün kodlamasını açıkça ele alın. Geçir errors='değiştir' için .decode() bozuk başlıklarda çöküşleri önlemek için.
03
Multipart mesajlardan ek ayrıştırma

Ekler iç içe MIME parçalarında bulunur. Çağrı get_payload() Çok parçalı bir mesaj, içeriği değil, parçaların bir listesini döndürür. Satır içi görseller Content-Disposition: inline ve bir İçerik Kimliği.

Düzelt: Tüm parçaları yürüterek msg.yürü(), kontrol et içerik_yönlendirmesini_al() için ek, ve ara get_payload(decode=True) kodlanmış baytları almak için ek parçalar.
04
Bağlantı havuzlama ve iş parçacığı güvenliği

imaplib.IMAP4_SSL Bağlantılar iş parçacığı açısından güvenli DEĞİLDİR. Birden çok iş parçacığında bir bağlantı kullanmak, bozuk yanıtlar almanıza neden olur. İstek başına yeni bir bağlantı oluşturmak maliyetlidir ve hız sınırlamalarına tabidir.

Düzelt: Bir bağlantı havuzu (işçi iş parçacığı başına bir bağlantı) veya gibi bir asenkron kütüphane kullanın aioimaplib. Her zaman yeniden bağlanma girişimleri için üslü geri çekilme uygulayın IMAP4.iptal istisnalar.
05
Hız sınırları ve kota tükenmesi

Gmail IMAP bağlantılarını hesap başına 15 eşzamanlı bağlantıyla sınırlar ve bant genişliği kotalarını (IMAP üzerinden günde 2.500 MB) uygular. RFC822'nin tamamının gövdelerini ölçekte almak bu sınırlara hızla ulaşacaktır.

Düzelt: Önce başlıkları getir (RFC822.BAŞLIK), sonra gövdeleri seçici olarak al. Kullan BODY.PEEK yerine RFC822 otomatik olarak okunmuş olarak işaretlenmesini önlemek için. Üstel geri çekilme uygulayın [AŞTI] Yanıtlar.
06
Oturum sırasında OAuth belirteci süresi doluyor

Google ve Microsoft'tan gelen erişim jetonları 3.600 saniye (1 saat) sonra süresi dolar. Jeton süresi dolduğunda IMAP oturumunuz hala açıksa, süresi dolduktan sonraki ilk komut sessizce başarısız olur veya geri döner HAYIR.

Düzelt: İzleyin geçerlilik_bitiş_tarihi zaman damgası. Her toplu işlemden önce, belirtecin 5 dakika içinde sona erip ermediğini kontrol edin ve proaktif olarak yenileyin. Yenileme belirteçlerini güvenli bir şekilde saklayın. Tam olarak bu şekilde Unipile otomatik olarak yönetir.

Tüm 6 tuzaktan kaçınmak önemli ölçüde altyapı gerektirir. Unipile, IDLE yeniden bağlantıları, belirteç yenileme, hız sınırlama ve çoklu sağlayıcı normalleştirme işlemlerini halleder - böylece siz ürün mantığınıza odaklanabilirsiniz. Tam ürünümüzün bir parçası e-posta API kılavuzu.

Zararlardan kaçınarak inşa et
SSS

Sıkça Sorulan Sorular

Python IMAP istemcileri, imaplib, IMAPClient, XOAUTH2 kimlik doğrulaması ve birleşik e-posta API'sini ne zaman kullanmak gerektiğine dair sık sorulan sorular.

01
En iyi Python IMAP kütüphanesi hangisidir?
Basit komut dosyaları için, imaplib standart kütüphaneden sıfır bağımlılıkla yeterlidir. Üretim kullanımı için, IMAPİstemci yapılandırılmış yanıtlar ve yerleşik IDLE desteğiyle daha temiz bir API sunar. Ölçekte zaman uyumsuz iş yükleri için, aioimaplib asyncio ile entegre olur. OAuth'un otomatik olarak yönetildiği çoklu sağlayıcı (Gmail, Outlook ve özel IMAP sunucuları) desteğine ihtiyacınız varsa, birleşik bir IMAP API Unipile'ın karmaşıklığın çoğunu ortadan kaldırması gibi.
02
imaplib Gmail e-postalarını Python'da okuyabilir mi?
Evet. Bağlan imap.gmail.com 993 numaralı bağlantı noktasını kullanarak imaplib.IMAP4_SSL. Ancak Gmail, üçüncü taraf uygulamalar için artık düz kullanıcı adı/parola ile girişi kabul etmiyor. Kullanmanız gereken OAuth ve XOAUTH2 Google'dan alınan bir erişim belirteci ile kimlik doğrulama https://mail.google.com/ kapsam. Bizim Gmail API kapsamları kılavuzu Tam kapsamlı döküm için. Uygulama şifreleri, 2 adımlı doğrulama etkinleştirilmiş kişisel hesaplar için hala çalışır, ancak uygulamalar için OAuth gereklidir.
03
XOAUTH2 nedir?
XOAUTH2, bir SASL (Basit Kimlik Doğrulama ve Güvenlik Katmanı) mekanizmasıdır ve parola yerine bir OAuth 2.0 Taşıyıcı belirteci ile IMAP bağlantılarını doğrulamak için kullanılır. Python'da, dizgiyi kodlarsınız kullanıcı={email}\x01auth=Bearer {token}\x01\x01 base64'e, ardından şunu geçirin: imaplib.IMAP4_SSL.authenticate('XOAUTH2', callback). Bu, Gmail ve Microsoft 365 için kullanımdan kaldırılmış Temel Kimlik Doğrulama oturum açma işleminin yerine geçer. Tam uygulama örnekleri bu kılavuzun 5. Bölümündedir. Ayrıca bkz. OAuth e-posta API kılavuzu.
04
IMAPlib ile OAuth'u nasıl kullanırım?
imaplib ile OAuth kullanmak için: 1) Sağlayıcıdan bir erişim belirteci edinin (Google OAuth 2.0 veya Microsoft MSAL). 2) XOAUTH2 dizesini oluştur: base64(f'user={email}\x01auth=Bearer {token}\x01\x01'). 3) Ara mail.authenticate('XOAUTH2', lambda x: auth_string). Gmail için şunu kullanın google-kimlikdoğrulama Outlook/Microsoft 365 için belirteç yenileme işlemlerini yönetmek üzere kitaplık kullanın, msal Python kütüphanesi. Her ikisi de Google Cloud Console veya Azure AD'de bir OAuth uygulaması kaydetmeyi gerektirir. Tam imap python oauth kodu yukarıdaki Bölüm 5'te yer almaktadır.
05
imaplib mi yoksa IMAPClient mi kullanmalıyım?
Kullanım imaplib harici bağımlılığa ihtiyaç duymadığınızda veya yalnızca basit bir seferlik bir betik kullandığınızda. Kullanın IMAPİstemci üretim kodu için: ham byte demetleri yerine yapılandırılmış sözlükler döndürür, varsayılan olarak UID kullanır, daha temiz sağlar ara()/fetch()/hareket et() yöntemler ve yerleşik IDLE desteği içerir. Her ikisi de OAuth belirteç yönetimini kendiniz halletmenizi gerektirir. Hiçbiri eşzamansız değil - asyncio tabanlı işlem hatları için şunu düşünün: aioimaplib. IMAPClient'i kurun pip install imapclient.
06
Python IMAP ile Outlook e-postalarını nasıl okurum?
Bağlanmak için outlook.office365.com 993 numaralı bağlantı noktasını kullanarak imaplib.IMAP4_SSL. Eylül 2024'ten itibaren Microsoft 365 için Temel Kimlik Doğrulama devre dışı bırakıldı - XOAUTH2 kullanmalısınız. Bir Azure AD uygulaması kaydedin, isteyin IMAP.ErişimKullanıcıOlarak.Tüm erişim izni, alın bir erişim jetonu kullanarak msal Python kütüphanesi, ardından kimlik doğrulaması yapın mail.authenticate('XOAUTH2', ...). Kişisel Outlook.com hesapları için aynı OAuth akışı geçerlidir. Sunucu ayrıntıları ve TLS yapılandırması için şunları inceleyin: IMAP sunucu bağlantı kılavuzu.
07
IMAP Microsoft 365 ile çalışır mı?
Evet, Microsoft 365 IMAP'i destekler outlook.office365.com:993. Ancak, Eylül 2024'ten itibaren Microsoft, Microsoft 365 kiracıları üzerinde IMAP için Temel Kimlik Doğrulamayı tamamen devre dışı bırakmıştır. XOAUTH2 SASL mekanizması ile OAuth 2.0 kullanmanız gerekmektedir. Azure AD yöneticinizin Exchange yönetim merkezinde IMAP erişimini etkinleştirmesi de gerekebilir. Bir alternatif ise şunu kullanmaktır Microsoft Graph API (REST) IMAP'ı tamamen ortadan kaldıran ve daha zengin meta veriler sağlayan.
08
Python'da IMAP IDLE ile nasıl başa çıkarım?
IMAP IDLE, yeni mesajlar geldiğinde sunucunun bildirim göndermesine olanak tanır. IMAPClient ile: çağrı server.bos() IDLE moduna girmek için, sonra server.idle_check(zaman_aşımı=60) olayları beklemek için. Gmail yaklaşık 29 dakika sonra sessizce bağlantıyı kesiyor, bu nedenle yenilemeniz gerekiyor: ara server.boşta_tamamlandı() her 25 dakikada bir, sonra server.bos() Tekrar. Ham imaplib ile IDLE, manuel soket düzeyinde yönetim gerektirir - bu durum önemli ölçüde daha karmaşıktır. Üretim düzeyinde gerçek zamanlı e-posta için webhook tabanlı bir yaklaşım (Unipile'ın sunduğu gibi), IDLE oturumlarını sürdürmekten daha güvenilirdir.
09
Python'da asenkron IMAP kullanabilir miyim?
Evet. aioimaplib kütüphane, Python için asyncio uyumlu bir IMAP4 istemcisi sağlar. Asenkron bağlamda standart IMAP komutlarını ve IDLE'ı destekler, bu da onu aynı anda birçok posta kutusunu yönettiğiniz yüksek eşzamanlılık hatlarına uygun hale getirir. Ancak, aioimaplib imaplib veya IMAPClient'tan daha küçük bir topluluğa sahip ve OAuth desteği hala manuel XOAUTH2 uygulaması gerektiriyor. Takımlar için geliştirici hızını ayrıntılı kontrolün önüne koyan, REST tabanlı birleşik API, webhook'lar aracılığıyla gerçek zamanlı e-posta sunar ve eşzamansız soket yönetimi gerektirmez.
10
Unipile, e-posta entegrasyonu için imaplib ile karşılaştırıldığında...
imaplib bir sağlayıcı başına 50-200 satır gerektiren düşük seviyeli bir Python standart kitaplığıdır: OAuth jeton yönetimi, XOAUTH2 oluşturma, ham bayt ayrıştırma, RFC 2047 başlık çözme, MIME gövde taraması, IDLE yeniden bağlanma döngüleri. Unipile Bu, her şeyi tek bir HTTP çağrısında soyutlayan, normalleştirilmiş JSON yanıtlarına, Gmail ve Outlook için yerleşik OAuth'a, yeni e-postalar için webhook teslimatına ve çoklu sağlayıcı desteğine sahip birleşik bir REST API'dir. Karşılaştırma: Unipile, kendi fiyatlandırması olan yönetilen bir hizmettir, imaplib ise ücretsizdir ancak önemli altyapı yatırımı gerektirir. Tamamını gör IMAP API kılavuzu ve sağlayıcı karşılaştırması.

Python'da IMAP API hakkında hala sorularınız var mı? Ekibimiz, kullanım durumunuza uygun yaklaşımı - ham IMAP veya birleşik API - seçmenize yardımcı olabilir.

Bir uzmanla konuşun
tr_TRTR