Jak połączyć się z serwerem IMAP: hosty, porty, SSL/TLS i OAuth (Przewodnik 2026)

Definicja

Czym właściwie jest połączenie z serwerem IMAP

Połączenie z serwerem IMAP to stała sesja TCP pomiędzy klientem poczty elektronicznej a serwerem pocztowym, która wykorzystuje protokół IMAP (Internet Message Access Protocol) do synchronizacji, pobierania i zarządzania wiadomościami e-mail przechowywanymi zdalnie – bez ich pobierania lub usuwania z serwera.

W przeciwieństwie do POP3, który został zaprojektowany do pobierania wiadomości lokalnie i opcjonalnie ich usuwania z serwera, IMAP został stworzony do synchronizacji. Każde odczytanie, oznaczenie flagą, przeniesienie lub usunięcie wykonane lokalnie jest odzwierciedlane na serwerze, a tym samym na wszystkich urządzeniach podłączonych do tej samej skrzynki pocztowej. Dlatego właśnie IMAP stał się de facto protokołem dla nowoczesnych klientów poczty e-mail.

Na poziomie sieci połączenie serwera IMAP otwiera gniazdo TCP do serwera poczty (zazwyczaj port 993 dla SSL/TLS lub port 143 dla STARTTLS), przeprowadza uzgadnianie TLS, uwierzytelnia użytkownika (za pomocą hasła, hasła aplikacji lub OAuth 2.0 XOAUTH2), a następnie wchodzi do automatu stanów: Nie uwierzytelniono, Uwierzytelniony, Wybrane (wewnątrz folderu skrzynki pocztowej), lub Wyloguj. Większość użytecznych poleceń - FETCH, SEARCH, STORE, COPY, EXPUNGE - działa tylko w stanie Selected.

Dla programistów tworzących integracje pocztowe, połączenie z serwerem IMAP jest podstawowym elementem. Ustanawiasz je, uwierzytelniasz, wybierasz skrzynkę pocztową, a następnie sprawdzasz lub używasz trybu IDLE w poszukiwaniu nowych wiadomości. Ten przewodnik obejmuje każdy etap: właściwy host i port dla każdego dostawcy, właściwą metodę uwierzytelniania w 2026 roku (OAuth staje się coraz bardziej obowiązkowy) oraz kompletne odniesienie do rozwiązywania problemów z najczęstszymi błędami.

Referencja techniczna

Porty IMAP wyjaśnione: 143, 993 i kiedy STARTTLS jest w porządku

Istnieją dokładnie dwa aktywne porty IMAP: 993 (Implicit TLS, nowoczesny standard) i 143 (aktualizacja STARTTLS lub zwykły tekst, czego większość serwerów już nie zezwala na zwykły tekst). Znajomość różnicy ma znaczenie, ponieważ użycie niewłaściwego portu jest jedną z najczęstszych przyczyn niepowodzeń połączenia podczas tworzenia integracji IMAP.

Dziedziczenie / Warunkowe
143
IMAP z uaktualnieniem STARTTLS

Klient łączy się w czystym tekście, a następnie wydaje STARTTLS polecenie uaktualnienia do TLS. Większość nowoczesnych serwerów wymaga tej aktualizacji i całkowicie odrzuca sesje w postaci zwykłego tekstu.

Dopuszczalne na korporacyjnych serwerach IMAP i poczcie hostowanej samodzielnie (np. Dovecot, Postfix)
Bardziej złożone uzgadnianie: klient musi obsługiwać przepływ STARTTLS jawnie
Unikaj dostawców chmury – wszyscy preferują 993
Port 143 bez STARTTLS jest blokowany przez praktycznie wszystkie nowoczesne serwery pocztowe

2026 zalecenie: zawsze używaj portu 993 z SSL_CONTEXT (TLS jawny). Jeśli tworzysz aplikację z myślą o firmowym serwerze IMAP, który udostępnia tylko port 143, włącz STARTTLS i zweryfikuj certyfikat serwera. Nigdy nie łącz się z serwerem IMAP w trybie tekstowym jawnym w środowisku produkcyjnym – dane uwierzytelniające przesyłane są w postaci jawnej, a większość dostawców odrzuca takie połączenia.

Krótka uwaga na temat RFC 9051 (IMAP4rev2), opublikowany w sierpniu 2021 r. jako następca RFC 3501. IMAP4rev2 formalnie wymaga protokołu TLS dla wszelkich połączeń przenoszących poświadczenia, wycofuje mechanizmy uwierzytelniania oparte na MD5 i usuwa LIST-ROZSZERZONY niekompatybilności, które powodowały subtelne błędy w starszych klientach. Większość głównych dostawców usług chmurowych (Gmail, Outlook) od lat jest zgodna z IMAP4rev2 w praktyce, jeszcze zanim RFC została sfinalizowana. W praktyce, docelowy port 993 + TLS sprawi, że domyślnie będziesz zgodny z RFC 9051.

Unipile - Tabela Hostów i Portów IMAP
Tabela referencyjna

Host i port - Gmail, Outlook, Yahoo, iCloud, Zoho, Fastmail, AOL, ProtonMail Bridge

Poniższa tabela zawiera poprawne ustawienia połączenia serwera IMAP dla najczęściej używanych dostawców poczty e-mail. Wszystkie wartości zostały zweryfikowane zgodnie z oficjalną dokumentacją każdego dostawcy na maj 2026 r. Użyj tej tabeli jako szybkiego punktu odniesienia podczas konfigurowania klienta IMAP lub tworzenia Integracja API IMAP.

Dostawca Host IMAP Port Szyfrowanie OAuth 2.0 (XOAUTH2) Notatki
Logo GmailGmail
imap.gmail.com 993 SSL/TLS
Tak (wymagane dla nowych aplikacji)
Hasła do aplikacji działają, ale OAuth jest zdecydowanie preferowane. Najpierw włącz IMAP w ustawieniach Gmail.
Logo OutlookOutlook / Microsoft 365
outlook.office365.com 993 SSL/TLS
Tak (Basic Auth przestarzałe w grudniu 2026)
Basic Auth koniec życia grudzień 2026 dla wszystkich najemców. Migruj teraz do OAuth.
Jasne!Yahoo Mail
imap.mail.yahoo.com 993 SSL/TLS
Tak
Wymagane hasło aplikacji, jeśli włączona jest weryfikacja dwuetapowa. OAuth przez portal deweloperski Yahoo.
iCPoczta iCloud
imap.mail.me.com 993 SSL/TLS
Nie (tylko hasło aplikacji)
Apple wymaga hasła specyficznego dla aplikacji z appleid.apple.com. Brak wsparcia OAuth XOAUTH2.
ZoZoho Mail
imap.zoho.com 993 SSL/TLS
Tak
OAuth przez Zoho Accounts API. IMAP musi być włączony dla każdej skrzynki pocztowej w ustawieniach Zoho Mail.
FmFastmail
imap.fastmail.com 993 SSL/TLS
Tak (preferowane JMAP)
Fastmail natywnie obsługuje JMAP (szybszy niż IMAP), ale pełne poparcie ma również IMAP. Dostępne są hasła aplikacyjne.
AOLPoczta AOL
imap.aol.com 993 SSL/TLS
Tak
Obecnie część Yahoo Inc. Wymagane hasło aplikacji, jeśli włączono 2FA. OAuth przez portal deweloperski Yahoo.
Przykro mi, ale nie mogę tego przetłumaczyć, ponieważ jest to niekompletne zdanie i nie rozumiem, co chcesz powiedzieć.Mostek ProtonMail
127.0.0.1 1143 STARTTLS
Nie (autoryzacja tokenem mostu)
ProtonMail Bridge działa lokalnie i udostępnia lokalny serwer IMAP. Nie nadaje się do integracji po stronie serwera.
GOgólny IMAP
twój-serwer-poczty.com 993 / 143 SSL/TLS STARTTLS
Zmienne (sprawdź konfigurację serwera)
Dovecot, Postfix, Zimbra, Courier. Sprawdź odpowiedź CAPABILITY serwera pod kątem obsługiwanych mechanizmów uwierzytelniania.
Logo Gmail Gmail
Host IMAP imap.gmail.com
Port 993
Szyfrowanie SSL/TLS
OAuth 2.0
Tak (wymagane dla nowych aplikacji)
Hasła do aplikacji działają, ale OAuth jest zdecydowanie preferowane. Najpierw włącz IMAP w ustawieniach Gmail.
Logo Outlook Outlook / Microsoft 365
Host IMAP outlook.office365.com
Port 993
Szyfrowanie SSL/TLS
OAuth 2.0
Tak (Basic Auth przestarzałe w grudniu 2026)
Basic Auth koniec życia grudzień 2026 dla wszystkich najemców. Migruj teraz do OAuth.
Jasne! Yahoo Mail
Host IMAP imap.mail.yahoo.com
Port 993
Szyfrowanie SSL/TLS
OAuth 2.0
Tak
Wymagane hasło aplikacji, jeśli włączona jest weryfikacja dwuetapowa. OAuth przez portal deweloperski Yahoo.
iC Poczta iCloud
Host IMAP imap.mail.me.com
Port 993
Szyfrowanie SSL/TLS
OAuth 2.0
Nie (tylko hasło aplikacji)
Apple wymaga hasła specyficznego dla aplikacji z appleid.apple.com. Brak wsparcia OAuth XOAUTH2.
Zo Zoho Mail
Host IMAP imap.zoho.com
Port 993
Szyfrowanie SSL/TLS
OAuth 2.0
Tak
OAuth przez Zoho Accounts API. IMAP musi być włączony dla każdej skrzynki pocztowej w ustawieniach Zoho Mail.
Fm Fastmail
Host IMAP imap.fastmail.com
Port 993
Szyfrowanie SSL/TLS
OAuth 2.0
Tak (preferowane JMAP)
Fastmail natywnie obsługuje JMAP (szybszy niż IMAP), ale pełne poparcie ma również IMAP. Dostępne są hasła aplikacyjne.
AOL Poczta AOL
Host IMAP imap.aol.com
Port 993
Szyfrowanie SSL/TLS
OAuth 2.0
Tak
Obecnie część Yahoo Inc. Wymagane hasło aplikacji, jeśli włączono 2FA. OAuth przez portal deweloperski Yahoo.
Przykro mi, ale nie mogę tego przetłumaczyć, ponieważ jest to niekompletne zdanie i nie rozumiem, co chcesz powiedzieć. Mostek ProtonMail
Host IMAP 127.0.0.1
Port 1143
Szyfrowanie STARTTLS
OAuth 2.0
Nie (autoryzacja tokenem mostu)
ProtonMail Bridge działa lokalnie i udostępnia lokalny serwer IMAP. Nie nadaje się do integracji po stronie serwera.
G Ogólny IMAP
Host IMAP twój-serwer-poczty.com
Port 993 / 143
Szyfrowanie SSL/TLS STARTTLS
OAuth 2.0
Zmienne (sprawdź konfigurację serwera)
Dovecot, Postfix, Zimbra, Courier. Sprawdź odpowiedź CAPABILITY serwera pod kątem obsługiwanych mechanizmów uwierzytelniania.

Uwaga dotycząca ProtonMail: architektura Bridge oznacza, że połączenia IMAP z ProtonMail są możliwe tylko w przypadku samodzielnych instalacji na komputery stacjonarne. W przypadku wielu kont lub integracji po stronie serwera, ProtonMail jest praktycznie nieobsługiwany za pośrednictwem standardowego IMAP. W przypadku Gmail i Outlook na dużą skalę, patrz nasze dedykowane przewodniki dotyczące OAuth dla interfejsów API poczty e-mail oraz Microsoft Graph API Poczta E-mail.

Przykład kodu

Krok po kroku: otwieranie surowego połączenia z serwerem IMAP

Poniżej znajdują się minimalne, działające przykłady otwierania uwierzytelnionego połączenia z serwerem IMAP przy użyciu wbudowanej w Pythona biblioteki imaplib i Node.js z imapflow. Oba przykłady łączą się z Gmailem przez port 993, korzystając z uwierzytelniania za pomocą hasła aplikacji. Informacje na temat OAuth XOAUTH2 znajdują się w sekcji H2 #7 poniżej.

Python (imaplib)
Node.js (imapflow)
imap_connect.py
import imaplib import SSL Ustawienia serwera IMAP # HOST_IMAP = "imap.gmail.com" IMAP_PORT = 993 NAZWA_UŻYTKOWNIKA = "you@gmail.com" HASŁO = "twoje-hasło-do-aplikacji" Hasło do aplikacji #, a nie hasło do konta # Utwórz kontekst SSL (zweryfikuj certyfikaty) kontekst = SSL.utwórz_domyślny_kontekst() # Otwórz połączenie SSL na porcie 993 z imaplib.IMAP4_SSL(IMAP_HOST, IMAP_PORT, ssl_context=kontekst jako imap: # – uwierzytelnianie imap.zaloguj(NAZWA UŻYTKOWNIKA, HASŁO) # Wybierz skrzynkę odbiorczą (zwraca liczbę wiadomości) status, dane = imap.wybierz("SKRZYNKA ODBIORCZA") print(Skrzynka odbiorcza zawiera {data[0].decode()} wiadomości") # Szukaj ukrytych wiadomości status, msg_ids = imap.wyszukiwanie(Żaden, "NIEWIDZIALNY") print(Niewidoczne: {msg_ids[0].decode()}") # Wylogowanie (połączenie zostaje zamknięte po zakończeniu bloku 'with')
imap_connect.mjs
// npm zainstaluj imapflow import { ImapFlow } z 'imapflow'; const klient = nowy ImapFlow({ Gospodarz: 'imap.gmail.com', port 993, bezpieczny: true, // SSL/TLS na porcie 993 autoryzacja: { użytkownik: 'you@gmail.com', hasło: 'twoje-hasło-aplikacji' }, rejestrator fałszywy }); czekać klient.połącz(); // Zablokuj skrzynkę INBOX do wyłącznego dostępu niech zamek = czekać klient.getMailboxLock('SKRZYNKA'); próbuj { // Pobierz ostatnie 5 wiadomości (tylko nagłówki) dla czekać (niech wiadomość z klient.fetch('1:5', { koperta: true })) { konsola.log(temat.koperty.wiadomości); } } wreszcie { zamek.zwolnić(); } czekać klient.wyloguj();

Przykład Pythona wykorzystuje IMAP4_SSL - wyższy poziom opakowania SSL, który automatycznie obsługuje uzgadnianie TLS. Unikaj używania IMAP4 + instrukcja starttls() dla dostawców chmury, ponieważ dodaje złożoności bez korzyści. Dla Node.js, imapflow jest nowoczesnym wyborem opartym na Promise (starszy node-imap biblioteka jest nieutrzymywana od 2024 roku i nie obsługuje XOAUTH2.

Oba przykłady używają haseł aplikacji, które są najprostszym typem poświadczeń do szybkiego testowania. W przypadku systemów produkcyjnych obsługujących wielu użytkowników potrzebne będzie OAuth 2.0 – patrz niższa sekcja XOAUTH2. Aby uzyskać kompletne rozwiązanie gotowe do produkcji bez zarządzania surowymi połączeniami IMAP, zobacz Przewodnik deweloperski API IMAP.

Pomiń standardowy tekst dotyczący protokołu IMAP. Unipile umożliwia odczyt, wysyłanie i synchronizację wiadomości w Gmailu, Outlooku i IMAP za pośrednictwem jednego interfejsu API REST – bez konieczności zarządzania połączeniami.

Pomiń standardowy kod IMAP — stwórz go za pomocą Unipile
Uwierzytelnianie

Uwierzytelnianie: hasło, hasło aplikacji oraz OAuth 2.0 (XOAUTH2)

Po nawiązaniu połączenia z serwerem IMAP konieczne jest uwierzytelnienie po zakończeniu uzgadniania TLS. Obecnie stosuje się trzy metody uwierzytelniania – każda z nich charakteryzuje się innym profilem bezpieczeństwa, poziomem złożoności oraz kompatybilnością z dostawcami usług w chmurze w 2026 roku.

1
Uwierzytelnianie podstawowe (nazwa użytkownika + hasło)

Oryginalny mechanizm IMAP AUTH PLAIN / LOGIN. Bezpośrednio wysyłasz adres e-mail konta i hasło konta na serwer IMAP. Prosty w implementacji, ale coraz częściej blokowany przez dostawców usług chmurowych ze względów bezpieczeństwa.

Wycofane dla chmury
2
Hasło aplikacji

16-znakowe hasło wygenerowane przez dostawcę (Gmail, Yahoo, iCloud), które zastępuje rzeczywiste hasło konta. Działa z tym samym poleceniem IMAP LOGIN co uwierzytelnianie podstawowe, ale ma określony zakres i może być unieważnione niezależnie. Wymagane, gdy włączone jest uwierzytelnianie dwuskładnikowe.

Dopuszczalne do użytku osobistego
3
OAuth 2.0 (XOAUTH2)

Użytkownik autoryzuje aplikację za pośrednictwem ekranu zgody. Aplikacja otrzymuje token dostępu (krótkotrwały, zazwyczaj na 1 godzinę), który należy zakodować w formacie Base64 i przekazać do polecenia IMAP AUTHENTICATE XOAUTH2. Tokeny są odświeżane za pomocą długotrwałego tokenu odświeżającego. Jest to jedyna realna metoda w przypadku produkcyjnych aplikacji obsługujących wielu użytkowników.

Niezbędne do produkcji

Kiedy co stosować: Podczas lokalnego programowania i korzystania z narzędzi osobistych należy stosować hasła aplikacji. W przypadku integracji wieloużytkownikowych należy stosować OAuth 2.0 (XOAUTH2) – jest to jedyna metoda zapewniająca skalowalność, ponieważ nie przechowuje się haseł użytkowników, a każdy token można unieważnić bez konieczności zmiany hasła użytkownika. W przypadku Gmaila firma Google stopniowo ogranicza autoryzację Basic Auth dla "mniej bezpiecznych aplikacji" od 2022 r. W przypadku Microsoft/Outlook wycofanie autoryzacji Basic Auth jest zaplanowane na grudzień 2026 r. dla wszystkich dzierżawców (zobacz następną sekcję).

Aby uzyskać szczegółowe informacje na temat procesów OAuth – w tym wymiany tokenów, mechanizmów odświeżania i zakresów – zapoznaj się z naszym przewodnikiem na stronie OAuth dla interfejsów API poczty e-mail. Aby skonfigurować protokół OAuth specyficzny dla firmy Microsoft, zobacz Microsoft Graph OAuth dla Outlook.

Konieczne działania w 2026 r.

Problem roku 2026: wycofanie protokołu Microsoft Basic Auth (grudzień 2026 r.)

Jeśli Twoja integracja IMAP łączy się z kontami Microsoft 365 lub Outlooka bezpośrednio przy użyciu nazwy użytkownika i hasła, czas ucieka. Firma Microsoft ogłosiła ostateczną datę wycofania uwierzytelniania podstawowego w protokołach IMAP, POP3 i SMTP dla wszystkich dzierżawców.

Koniec wsparcia dla uwierzytelniania podstawowego Microsoft: grudzień 2026 r.

Według Microsoft Learn i Ogłoszenie dotyczące serwisu Microsoft Community Hub, W grudniu 2026 roku Exchange Online całkowicie wyłączy podstawowe uwierzytelnianie dla IMAP, POP3 i SMTP. dotyczy wszystkich użytkowników – w tym tych, którzy obecnie korzystają ze zwolnień. Każdy klient IMAP lub integracja po stronie serwera, które nadal wykorzystują uwierzytelnianie za pomocą nazwy użytkownika i hasła, przestaną działać. Nie ma możliwości dalszego przedłużenia terminu.

Kroki, które należy podjąć w celu przeprowadzenia migracji przed upływem terminu

1
Przeprowadź audyt swoich integracji

Przeszukaj swój kod pod kątem połączeń IMAP, które wykorzystują zaloguj się (nazwa użytkownika, hasło) lub AUTH PLAIN. Sprawdź logi logowania w usłudze Microsoft Entra ID (dawniej Azure AD) pod kątem aktywności IMAP Basic Auth.

2
Zarejestruj aplikację w usłudze Microsoft Entra ID

Utwórz rejestrację aplikacji na portalu portal.azure.com, używając IMAP.AccessAsUser.All (przekazane) lub IMAP.AccessAsApp (aplikacja) zezwolenie. Zobacz Microsoft Graph OAuth dla Outlook aby uzyskać szczegółowy przewodnik.

3
Zaimplementuj pozyskiwanie tokenów OAuth 2.0

Użyj biblioteki MSAL (Microsoft Authentication Library) do pozyskiwania tokenów dostępu. Zaimplementuj logikę odświeżania tokenów - tokeny Microsoft wygasają po 1 godzinie i potrzebujesz przepływu odświeżania tokenów, aby utrzymać długoterminowe sesje IMAP bez ponownego uwierzytelniania użytkownika.

4
ZASTĄP LOGOWANIE UWIERZYTELNIJ XOAUTH2

Zamień IMAP ZALOGUJ SIĘ polecenie z POTWIERDŹ XOAUTH2 za pomocą zakodowanego w base64 ciągu tokenu. Pełny przykładowy kod można znaleźć w sekcji XOAUTH2 poniżej.

5
Przetestuj w dzierżawie przejściowej przed terminem

Microsoft udostępnia możliwość wcześniejszego wyłączenia uwierzytelniania podstawowego na zasadzie dzierżawy – skorzystaj z tego, aby przetestować swój przepływ OAuth przed wymuszonym terminem w grudniu 2026 r., aby uniknąć debugowania problemów produkcyjnych pod presją czasu.

Jeśli zarządzasz połączeniami IMAP dla wielu użytkowników Microsoft 365 – co jest częstym scenariuszem dla narzędzi CRM, ATS lub automatyzacji sprzedaży – złożoność migracji szybko rośnie. Musisz obsługiwać przepływy zgody OAuth dla każdego użytkownika, bezpiecznie przechowywać i odświeżać tokeny oraz radzić sobie z zasadami dostępu warunkowego, które mogą blokować Twoją aplikację w niektórych dzierżawach. Jest to jeden z głównych powodów, dla których deweloperzy wybierają zarządzane API IMAP zamiast samodzielnego utrzymywania surowych połączeń.

Termin dla Microsoft Basic Auth zbliża się wielkimi krokami. Zbuduj przyszłościowy przepływ OAuth już dziś dzięki zunifikowanemu API e-mail Unipile - my zajmiemy się odświeżaniem tokenów, uwierzytelnianiem wielodostępnym i XOAUTH2.

Zbuduj przyszłościowy przepływ OAuth
Unipile - Blok kodu XOAUTH2
Kod OAuth 2.0

Łączenie przez OAuth XOAUTH2

XOAUTH2 to mechanizm SASL, który pozwala uwierzytelnić połączenie z serwerem IMAP za pomocą tokena dostępu OAuth 2.0 zamiast hasła. Token jest uzyskiwany przez standardowy przepływ kodu autoryzacji OAuth (lub poświadczenia klienta dla kont usług), zakodowany w formacie base64 i przekazany do POTWIERDŹ XOAUTH2 Polecenie IMAP.

Logo GmailGmail (Google)
Logo OutlookMicrosoft 365
gmail_xoauth2.py
import imaplib, base64, json z google.oauth2.credentials import Poświadczenia z google.auth.transport.requests import Prośba # Załaduj wcześniej uzyskane dane uwierzytelniające OAuth # (z procesu google-auth-oauthlib) poświadczenia = Uwierzytelnienia( token=TOKEN_DOSTĘPU, token_odświeżający=REFRESH_TOKEN, token_uri="https://oauth2.googleapis.com/token", client_id=CLIENT_ID, client_secret=SECRET_KLIENTA, zakresy=["https://mail.google.com/"] ) # Odśwież token, jeśli wygasł jeśli creds.expired: dane uwierzytelniające.odśwież(Prośba()) # Utwórz ciąg znaków XOAUTH2: "user={email}\x01auth=Bearer {token}\x01\x01" adres_email_użytkownika = "user@gmail.com" ciąg_autoryzacyjny = f"user={user_email}\x01auth=Bearer {creds.token}\x01\x01" auth_b64 = base64.b64encode(auth_string.koduj()).decode() # Otwórz połączenie IMAP i uwierzytelnij się z imaplib.IMAP4_SSL("imap.gmail.com", 993) jako imap: imap.uwierzytelnij("XOAUTH2", lambda _: auth_b64) imap.wybierz("SKRZYNKA ODBIORCZA") print("Połączono przez XOAUTH2")
outlook_xoauth2.py
import imaplib, base64 z msal import AplikacjaDlaKlientaPoufnego # Pobieranie tokenu za pomocą MSAL (procedura uwierzytelniania klienta dla kont usługowych) # W przypadku dostępu opartego na upoważnieniu użytkownika należy zamiast tego skorzystać z procedury opartej na kodzie uwierzytelniającym aplikacja = AplikacjaDlaKlientaPoufnego( client_id=CLIENT_ID, autorytet=https://login.microsoftonline.com/{TENANT_ID}", credential_klienta=KLUCZ_SEKRETNY ) wynik = aplikacja.pozyskaj_token_dla_klienta( zakresy=["https://outlook.office365.com/.default"] ) token_dostępu = wynik["token dostępu"] # Utwórz ciąg znaków XOAUTH2 adres_email_użytkownika = "user@company.com" ciąg_autoryzacyjny = f"user={user_email} auth=Bearer {access_token}" auth_b64 = base64.b64encode(auth_string.koduj()).decode() # – Połącz z programem Outlook (IMAP) z imaplib.IMAP4_SSL("outlook.office365.com", 993) jako imap: imap.uwierzytelnij("XOAUTH2", lambda _: auth_b64) imap.wybierz("SKRZYNKA ODBIORCZA") print("Połączono przez XOAUTH2 z programem Outlook")

Kluczowe różnice między Gmail a Microsoft XOAUTH2: Gmail wymaga https://mail.google.com/ zakres (pełny dostęp do Gmail). Microsoft wymaga IMAP.AccessAsUser.All (przekazane) lub IMAP.AccessAsApp (aplikacja). Format ciągu XOAUTH2 base64 jest identyczny dla obu dostawców: email\x01auth=Bearer {token}\x01\x01.

Jedna kluczowa kwestia implementacyjna: tokeny wygasają po 3600 sekundach. Długotrwała sesja IMAP IDLE (patrz następna sekcja) otrzyma błąd uwierzytelniania, gdy token wygaśnie w trakcie sesji. Musisz przechwycić NIEUDANE_UWWIERZTELNIENIE błąd, odśwież token za pomocą swojego tokenu odświeżającego, a następnie ponownie nawiąż połączenie IMAP. Ta pętla ponawiania prób nie jest trywialna i jest głównym powodem, dla którego zespoły wybierają zarządzane API, takie jak Przewodnik po zunifikowanym interfejsie API poczty e-mail zamiast surowych połączeń IMAP.

Kompletny przewodnik po konfiguracji OAuth dla firmy Microsoft, w tym uwagi dotyczące zasad dostępu warunkowego, znajdziesz pod adresem Microsoft Graph OAuth dla Outlook przewodnik.

OAuth XOAUTH2 w 10 linijkach. Mechanizm uwierzytelniania dla protokołów IMAP/POP3/SMTP. Wykorzystuje tokeny OAuth 2.0 zamiast tradycyjnych haseł. Klient wysyła żądanie uwierzytelnienia do serwera. Zawiera dane uwierzytelniające w formacie SASL XOAUTH2. Format: "base64(\x01user\x01scopes\x01\x11access_token\x02)". Serwer weryfikuje token OAuth z dostawcą tożsamości. Jeśli token jest ważny, połączenie zostaje uwierzytelnione. Zwiększa bezpieczeństwo, nie wymaga udostępniania hasła. Umożliwia aplikacjom dostęp do skrzynek pocztowych w imieniu użytkownika. Unipile automatycznie obsługuje pozyskiwanie, odświeżanie tokenów i ponowne uwierzytelnianie IMAP. Ty skupiasz się na czytaniu wiadomości e-mail, a nie na zarządzaniu połączeniem.

Zbuduj OAuth XOAUTH2 w 10 liniach z Unipile: 1. `pip install unipile` 2. `from unipile import Unipile` 3. `user_email = "twoj@email.com"` 4. `client_secret = "twoj_sekret"` 5. `client_id = "twoj_id"` 6. `scopes = ["https://www.googleapis.com/auth/gmail.send"]` 7. `unipile = Unipile(user_email, client_secret, client_id, scopes)` 8. `auth_url = unipile.get_authorization_url()` 9. `print(f"Otwórz ten link w przeglądarce: {auth_url}")` 10. `access_token = unipile.get_access_token(input("Wklej kod autoryzacji: "))`
Synchronizacja w czasie rzeczywistym

IDLE, sondowanie i powiadomienia push: utrzymywanie aktywnego połączenia IMAP

Gdy masz uwierzytelnione połączenie z serwerem IMAP, kolejnym wyzwaniem jest efektywne wykrywanie nowych wiadomości bez przeciążania serwera ciągłymi żądaniami. Obecnie stosowane są trzy wzorce – każdy z różnym czasem oczekiwania, złożonością i wymaganiami infrastrukturalnymi.

Metoda Jak to działa Opóźnienie Infrastruktura Najlepszy dla Ocena
IMAP IDLE (RFC 2177) Klient zgłasza problem z komendą IDLE; serwer wysyła powiadomienia EXISTS/RECENT przez otwarte połączenie TCP, gdy nadchodzi nowa poczta. Klient musi wysłać DONE + ponownie wydać IDLE co 29 minut (timeout serwera). ~1-5 sekund 1 stałe połączenie TCP na skrzynkę pocztową. Wymaga dedykowanego wątku lub pętli asynchronicznej. Narzędzia dla jednego użytkownika, klienty desktopowe, monitorowanie z niskim opóźnieniem Dobrze
Sondaż (NOOP / CHECK) Klient okresowo się rozłącza, wykonuje SELECT + SEARCH UNSEEN, aby wyszukać nowe wiadomości, a następnie się rozłącza. Proste i bezstanowe. Równa interwałowi odpytywania (zazwyczaj 1-15 min) Bezstanowy. Działa za NAT-em/firewalem. Brak stałego połączenia. Przetwarzanie wsadowe, dopuszczalne duże opóźnienia, środowiska, w których zablokowane są połączenia stałe Dopuszczalne
Dostawcy push (Gmail Pub/Sub, webhooky MS Graph) Dostawca wysyła powiadomienie HTTP do Twojego punktu końcowego webhook po odebraniu nowej poczty. Połączenie IMAP nie jest wymagane w spoczynku. Gmail używa Google Cloud Pub/Sub; Microsoft używa powiadomień o zmianach MS Graph. Prawie w czasie rzeczywistym(typowe poniżej 1 sekundy) Wymaga publicznego punktu końcowego HTTPS i subskrypcji Pub/Sub. Brak trwałego połączenia IMAP w spoczynku. Wielkoskalowe systemy produkcyjne z wieloma kontami, architektury bezserwerowe Najlepszy w skali

IDLE to dobry wybór dla prostych integracji gdzie kontrolujesz niewielką liczbę kont. Główne problemy: musisz ponownie połączyć się przed 29-minutowym limitem bezczynności (Gmail ściśle tego przestrzega) i potrzebujesz osobnych połączeń IMAP dla każdej skrzynki pocztowej – co staje się kosztowne przy setkach lub tysiącach kont.

Powiadomienia push od dostawcy są właściwą architekturą dla produkcyjnych systemów wielokontowych. Integracja Gmail z Pub/Sub i webhooki subskrypcyjne Microsoft Graph oba dostarczają powiadomienia w czasie niemal rzeczywistym, nie wymagając stałego połączenia IMAP dla każdego konta. Kompromis: nadal musisz otworzyć połączenie IMAP, aby pobrać treść wiadomości, gdy otrzymasz powiadomienie, co oznacza, że twój kod połączenia IMAP jest nadal potrzebny – po prostu nie jest utrzymywany stale otwarty. Aby odczytywać wiadomości e-mail za pomocą API, zapoznaj się z naszym przewodnikiem dotyczącym odczytywanie wiadomości e-mail przez API oraz wysyłanie e-maili przez API.

Unipile - Macierz rozwiązywania problemów IMAP
Rozwiązywanie problemów

Matryca rozwiązywania problemów: przekroczenia limitu czasu, błędy uzgadniania, błędy uwierzytelniania, limity żądań

Poniżej znajduje się ustrukturyzowany spis najczęstszych błędów połączenia z serwerem IMAP. Dopasuj objaw (komunikat o błędzie lub obserwowalne zachowanie) do prawdopodobnej przyczyny i zalecanej poprawki.

Objaw / Błąd Kategoria Prawdopodobna przyczyna Naprawić
Odrzucono połączenie na porcie 993 Połączenie Nieprawidłowy host, IMAP wyłączony w ustawieniach dostawcy lub zapora sieciowa blokująca wychodzące połączenie 993 Zweryfikuj host z powyższej tabeli. Włącz IMAP w ustawieniach dostawcy (Gmail: Ustawienia > Przekazywanie i POP/IMAP). Sprawdź zaporę sieciową/serwer proxy pod kątem wychodzącego połączenia TCP 993.
Przekroczenie limitu czasu uzgadniania SSL / CERTIFICATE_VERIFY_FAILED TLS Wygasły lub samopodpisany certyfikat, nieaktualny pakiet CA, zły port (143 zamiast 993) Użycie ssl.create_default_context() (Python) - nie przechodź ssl._create_unverified_context() w produkcji. Zaktualizuj swój pakiet CA (pip install certifi). Potwierdź połączenie z portem 993.
NIEUDANA_AUTHENTHIKACJA / [NIEUDANA_AUTHENTHIKACJA] Nieprawidłowe dane logowania Auth Błędne hasło, hasło aplikacji nie zostało wygenerowane, włączona autoryzacja dwuskładnikowa, ale hasło aplikacji nie zostało użyte, uwierzytelnianie podstawowe zablokowane przez dostawcę Wygeneruj hasło specyficzne dla aplikacji z ustawień bezpieczeństwa dostawcy. W przypadku Gmaila upewnij się, że "Dostęp mniej bezpiecznych aplikacji" nie jest metodą - użyj hasła aplikacji lub OAuth. W przypadku Microsoft sprawdź, czy uwierzytelnianie podstawowe nie jest wyłączone dla najemcy.
OTWIERANIE XOAUTH2 - nieprawidłowy_token OAuth Token dostępu wygasł (tokeny są ważne przez 3600 sekund), nieprawidłowy ciąg XOAUTH2 w kodowaniu base64, nieprawidłowy zakres Odśwież token dostępu przed połączeniem. Zweryfikuj format ciągu znaków XOAUTH2: email\x01auth=Bearer {token}\x01\x01. Sprawdź zakres: Gmail potrzebuje https://mail.google.com/; Outlook potrzebuje IMAP.AccessAsUser.All.
imaplib.error: polecenie AUTHENTICATE nielegalne w stanie AUTH Stan Próba uwierzytelnienia w stanie uwierzytelnionym lub po nieudanej próbie uwierzytelnienia bez resetowania Zamknij i ponownie otwórz połączenie IMAP przed ponowieniem próby uwierzytelnienia. Nigdy nie ponawiaj próby uwierzytelnienia na tym samym połączeniu po awarii.
Połączenie IMAP zrywa się po 29 minutach w trybie IDLE BEZCZYNNOŚĆ Limit czasu bezczynności wymuszony przez serwer (standardowo: 30 minut zgodnie z RFC 2177). Gmail wymusza 29 minut. Problem ZROBIONE między 25. a 27. minutą, a następnie natychmiast wydać ponownie BEZCZYNNOŚĆ. Użyj wątku w tle lub zadania asynchronicznego z 25-minutowym zegarem „heartbeat”.
[PRZEKROCZONY LIMIT] lub Zbyt wiele jednoczesnych połączeń Limit żądań Przekroczono limit połączeń nałożony przez dostawcę. Gmail pozwala na 15 jednoczesnych połączeń IMAP na konto; Outlook różni się w zależności od planu. Używaj puli połączeń. Dla Gmaila: maksymalnie 15 jednoczesnych połączeń na konto. Jawnie zamykaj nieaktywne połączenia (WYLOGUJniż rezygnacja z TCP. Zaimplementuj wykładnicze wycofywanie się w przypadku błędów połączeń.
NIE [ALARM] Zaloguj się przez przeglądarkę internetową Auth Wyzwanie bezpieczeństwa Google aktywowane (nietypowy wzorzec dostępu, nowe IP, wymagane CAPTCHA) Zaloguj się przez przeglądarkę z tej samej sieci, aby rozwiązać wyzwanie bezpieczeństwa. Rozważ przełączenie się na OAuth – dostęp za pomocą hasła aplikacji z nieznanych adresów IP częściej wywołuje te wyzwania niż OAuth.
BYE Autowylogowanie; bezczynność przez zbyt długi czas Połączenie Połączenie IMAP w stanie uwierzytelnionym (skrzynka pocztowa nie jest wybrana) było bezczynne zbyt długo Po uwierzytelnieniu, natychmiast wybierz skrzynkę pocztową lub wydaj polecenie IDLE. Zaimplementuj logikę ponownego połączenia po otrzymaniu komunikatu BYE.
FETCH zwraca pustą treść / puste części Protokół Wiadomość została usunięta między SEARCH i FETCH lub niezgodność UID po ponownym skanowaniu folderu Zawsze używaj ID POBIERZ (bez numerów sekwencji) w przypadku operacji wieloetapowych. Obsłuż Żaden bezpiecznie zwracaj wartości z FETCH. Ponownie wydaj polecenie SEARCH po ponownym połączeniu, aby uzyskać nowe UID-y.
Odrzucono połączenie na porcie 993 Połączenie
Prawdopodobna przyczyna Host jest nieprawidłowy, IMAP wyłączony w ustawieniach dostawcy lub zapora blokuje port 993 wychodzący.
Naprawić Zweryfikuj host z powyższej tabeli. Włącz IMAP w ustawieniach dostawcy (Gmail: Ustawienia > Przekazywanie i POP/IMAP). Sprawdź zaporę sieciową/serwer proxy pod kątem wychodzącego połączenia TCP 993.
Przekroczenie limitu czasu uzgadniania SSL / CERTIFICATE_VERIFY_FAILED TLS
Prawdopodobna przyczyna Wygasły lub samopodpisany certyfikat, nieaktualna paczka CA, zły port (143 zamiast 993).
Naprawić Użycie ssl.create_default_context() (Python) - nie przechodź ssl._create_unverified_context() w produkcji. Zaktualizuj swój pakiet CA (pip install certifi). Potwierdź połączenie z portem 993.
BŁĄD_AUTENTYZACJI / Nieprawidłowe dane uwierzytelniające Auth
Prawdopodobna przyczyna Błędne hasło, hasło aplikacji nie zostało wygenerowane, włączona 2FA, ale nie użyto hasła aplikacji, uwierzytelnianie podstawowe zablokowane przez dostawcę.
Naprawić Wygeneruj hasło specyficzne dla aplikacji z ustawień bezpieczeństwa dostawcy. W przypadku Gmaila upewnij się, że "Dostęp mniej bezpiecznych aplikacji" nie jest metodą - użyj hasła aplikacji lub OAuth. W przypadku Microsoft sprawdź, czy uwierzytelnianie podstawowe nie jest wyłączone dla najemcy.
OTWIERANIE XOAUTH2 - nieprawidłowy_token OAuth
Prawdopodobna przyczyna Dostęp do tokenu wygasł (tokeny są ważne przez 3600 s), nieprawidłowy ciąg XOAUTH2 zakodowany w base64, niewłaściwy zakres.
Naprawić Odśwież token dostępu przed połączeniem. Zweryfikuj format ciągu znaków XOAUTH2: email\x01auth=Bearer {token}\x01\x01. Sprawdź zakres: Gmail potrzebuje https://mail.google.com/; Outlook potrzebuje IMAP.AccessAsUser.All.
imaplib.error: AUTHENTICATE niedozwolone w stanie AUTH Stan
Prawdopodobna przyczyna Próba uwierzytelnienia w stanie uwierzytelnionym lub po nieudanej próbie uwierzytelnienia bez resetowania.
Naprawić Zamknij i ponownie otwórz połączenie IMAP przed ponowieniem próby uwierzytelnienia. Nigdy nie ponawiaj próby uwierzytelnienia na tym samym połączeniu po awarii.
Połączenie IMAP zrywa się po 29 minutach w trybie IDLE BEZCZYNNOŚĆ
Prawdopodobna przyczyna Limit czasu bezczynności wymuszony przez serwer (standardowo: 30 minut zgodnie z RFC 2177). Gmail wymusza 29 minut.
Naprawić Problem ZROBIONE między 25. a 27. minutą, a następnie natychmiast wydać ponownie BEZCZYNNOŚĆ. Użyj wątku w tle lub zadania asynchronicznego z 25-minutowym zegarem „heartbeat”.
[PRZEKROCZONY LIMIT] lub Zbyt wiele jednoczesnych połączeń Limit żądań
Prawdopodobna przyczyna Przekroczono limit połączeń nałożony przez dostawcę. Gmail pozwala na 15 jednoczesnych połączeń IMAP na konto; Outlook różni się w zależności od planu.
Naprawić Używaj puli połączeń. Dla Gmaila: maksymalnie 15 jednoczesnych połączeń na konto. Jawnie zamykaj nieaktywne połączenia (WYLOGUJniż rezygnacja z TCP. Zaimplementuj wykładnicze wycofywanie się w przypadku błędów połączeń.
NIE [ALARM] Zaloguj się przez przeglądarkę internetową Auth
Prawdopodobna przyczyna Wyzwanie bezpieczeństwa Google zostało uruchomione (niezwykły wzorzec dostępu, nowy adres IP, wymagana usługa reCAPTCHA).
Naprawić Zaloguj się przez przeglądarkę z tej samej sieci, aby rozwiązać wyzwanie bezpieczeństwa. Rozważ przełączenie się na OAuth – dostęp za pomocą hasła aplikacji z nieznanych adresów IP częściej wywołuje te wyzwania niż OAuth.
BYE Autowylogowanie; bezczynność przez zbyt długi czas Połączenie
Prawdopodobna przyczyna Połączenie IMAP w stanie uwierzytelnionym (skrzynka pocztowa nie jest wybrana) było bezczynne zbyt długo.
Naprawić Po uwierzytelnieniu, natychmiast wybierz skrzynkę pocztową lub wydaj polecenie IDLE. Zaimplementuj logikę ponownego połączenia po otrzymaniu komunikatu BYE.
FETCH zwraca pustą treść / puste części Protokół
Prawdopodobna przyczyna Komunikat został usunięty między SEARCH a FETCH, lub UID nie pasuje po ponownym skanowaniu folderu.
Naprawić Zawsze używaj ID POBIERZ (bez numerów sekwencji) w przypadku operacji wieloetapowych. Obsłuż Żaden bezpiecznie zwracaj wartości z FETCH. Ponownie wydaj polecenie SEARCH po ponownym połączeniu, aby uzyskać nowe UID-y.

Przestań debugować błędy IMAP. Unipile udostępnia czyste obiekty poczty e-mail przez REST — bez stanowego automatu IMAP, logiki odświeżania tokenów ani zarządzania pulami połączeń.

Przestań debugować IMAP - Zacznij tworzyć
Rzeczywistość produkcyjna

Dlaczego produkcyjne IMAP na dużą skalę jest trudniejsze niż się wydaje

Otwarcie pojedynczego połączenia z serwerem IMAP do skrzynki odbiorczej Gmail to 15 linii kodu w Pythonie. Skalowanie tego do setek lub tysięcy użytkowników w produkcie SaaS stanowi fundamentalnie inne wyzwanie inżynieryjne. Oto szczere omówienie, gdzie surowe połączenia IMAP tworzą nieoczywistą złożoność.

Zarządzanie cyklem życia tokenów OAuth

Tokeny dostępu wygasają co 3600 sekund. W przypadku 1000 połączonych kont potrzebujesz zadania w tle, które proaktywnie odświeża tokeny przed wygaśnięciem, obsługuje rotację tokenów odświeżających (Google obraca je w pewnych warunkach) i zarządza przypadkiem, gdy użytkownik cofa dostęp – czego dowiadujesz się dopiero przy następnym użyciu tokenu.

Stan połączenia IMAP wielu kont

Każda aktywna sesja IMAP przechowuje stan: aktualnie wybraną skrzynkę pocztową, ostatnio widziane UID, licznik IDLE. Jeśli serwer zostanie zrestartowany, tracisz cały ten stan i musisz przeprowadzić ponowną synchronizację od zera – potencjalnie pobierając tysiące wiadomości, które już przetworzyłeś. Potrzebujesz trwałego magazynu stanu dla każdego konta.

Błąd ponowienia i wykładnicze wycofywanie

Przejściowe błędy (problemy z siecią, błędy serwera 500, odpowiedzi z limitami żądań) wymagają logiki ponawiania z wykładniczym opóźnieniem i jitterem. Naiwne pętle ponawiania bombardują dostawców i prowadzą do tymczasowych banów IP. Potrzebujesz odpowiedniej kolejki zadań z konfigurowalnymi opóźnieniami ponawiania i obsługą martwych list dla trwale nieudanych kont.

Przechowywanie danych uwierzytelniających i szyfrowanie w spoczynku

Tokeny odświeżające OAuth to długoterminowe poświadczenia, które udzielają pełnego dostępu do poczty e-mail. Muszą być szyfrowane podczas przechowywania kluczem opartym na KMS, kontrolowane pod względem dostępu na poziomie infrastruktury i rotowane w przypadku jakichkolwiek oznak naruszenia. Jest to znacząca powierzchnia bezpieczeństwa, która wymaga odpowiedniej infrastruktury zarządzania kluczami.

Ograniczanie liczby żądań i limity na konto

Gmail ogranicza liczbę jednoczesnych połączeń IMAP do 15 na konto. Jeśli twoja aplikacja otwiera więcej połączeń niż dozwolono, otrzymuje błędy OVERQUOTA. Jednocześnie dostawcy nakładają również limity przepustowości na całkowitą ilość przesyłanych danych. Potrzebujesz puli połączeń, ograniczania żądań i śledzenia limitów na konto.

Przypadki brzegowe specyficzne dla dostawcy

Etykiety Gmaila a foldery IMAP, niestandardowe nazewnictwo folderów przez Outlook dla wysłanych/usuniętych, serwery IMAP zwracające odpowiedzi CAPABILITY niezgodne z tym, co faktycznie obsługują, oraz serwery, które cicho zrywają połączenia podczas operacji FETCH na dużych załącznikach. Każdy dostawca ma swój unikalny zestaw dziwactw, które ujawniają się dopiero w praktyce.

To nie jest argument przeciwko tworzeniu niestandardowej integracji IMAP – dla narzędzia jednodostawcowego, jednego użytkownika, surowy IMAP jest całkowicie rozsądny. Ale dla każdego produktu, który potrzebuje czytaj i synchronizuj e-maile z wielu dostawców i wielu kont użytkowników, narzut operacyjny związany z utrzymaniem niestandardowej warstwy IMAP zazwyczaj przewyższa koszt korzystania z dedykowanego API poczty e-mail. Przewodnik po zunifikowanym interfejsie API poczty e-mail szczegółowo omawia kompromisy architektoniczne.

Synchronizacja poczty produkcyjnej bez narzutu IMAP. Unipile obsługuje pulowanie połączeń, odświeżanie tokenów, ponawianie prób w przypadku błędów i normalizację wielu dostawców – wystarczy wywołać API.

Buduj na dużą skalę bez narzutu IMAP
Unipile - IMAP BOFU (Light)
Szybki start w 5 minut

Tworzenie integracji IMAP bez zarządzania połączeniem: Unipile

Jeśli dotarłeś(aś) do tego miejsca, masz jasny obraz tego, co jest potrzebne do utrzymania surowych połączeń IMAP w środowisku produkcyjnym: pętle odświeżania tokenów OAuth, zarządzanie stanem na konto, pulowanie połączeń, logika ponawiania prób i specyficzne dla dostawcy niedoskonałości dla serwerów Gmail, Outlook i IMAP. Unipile abstrahuje całą tę warstwę i udostępnia jedno API REST do odczytu, wysyłania i synchronizowania wiadomości e-mail między wszystkimi trzema, z 5-minutowym przewodnikiem „szybki start” i mniej niż 10 liniami kodu na operację.

OAuth jest obsługiwane za Ciebie

Unipile zarządza pełnym przepływem OAuth dla Gmail i Microsoft 365: pozyskiwaniem tokenów, odświeżaniem i rotacją. Nigdy nie masz bezpośredniego dostępu do tokena odświeżania.

Gmail, Outlook i IMAP w jednym miejscu

Jeden interfejs API, jeden schemat odpowiedzi. Odczytuj e-maile z skrzynki odbiorczej Gmail i firmowego serwera IMAP przy użyciu tego samego wywołania GET /emails. Bez specyficznego dla dostawcy parsowania.

Webhooki w czasie rzeczywistym, bez pętli bezczynności

Otrzymuj powiadomienia HTTP po nadejściu nowych wiadomości e-mail. Brak konieczności zarządzania stałym połączeniem IMAP, brak problemu z 29-minutowym limitem czasowym IDLE ani dedytowanego wątku na konto.

Wielokontowość od pierwszego dnia

Połącz konta użytkowników za pomocą hostowanego przepływu OAuth Unipile. Każde połączone konto otrzymuje własny identyfikator konta (`account_id`). Skaluj od 1 do 10 000 połączonych kont bez zmiany kodu integracji.

SOC 2 Typ II + CASA Poziom 2

Poświadczenia zaszyfrowane w spoczynku za pomocą kluczy wspieranych przez KMS. Unipile posiada certyfikat SOC 2 Type II i ocenę CASA Tier 2. Żadne hasła IMAP ani tokeny OAuth nie są przechowywane w Twojej bazie danych.

unipile_quickstart.py
import żądania BASE_URL = "https://api7.unipile.com:13047/api/v1" NAGŁÓWKI = {"X-API-KEY": "twój-klucz-api-unipile"} # Krok 1: Wymień wszystkie połączone konta konta = żądania.uzyskać( f"{BAZA_URL}/konta", nagłówki=NAGŁÓWKI ).json() account_id = konta["przedmioty"][0]["id"] # Krok 2: Przeczytaj wiadomości w skrzynce odbiorczej e-maile = żądania.uzyskać( f"{BASE_URL}/emails", nagłówki=NAGŁÓWKI, parametry={"account_id": identyfikator_konta, "limit": 10} ).json() dla e-mail w e-maile"przedmioty"]: print(email"temat"], e-mail["od_uczestnika"]) # Brak połączenia IMAP, brak odświeżenia tokenu, # – bez kontekstu SSL, bez maszyny stanów.
Działa z Gmail, Outlook i IMAP: ten sam kod
Współpracuje z: Gmail Perspektywy IMAP
SOC 2 Typ II CASA Poziom 2 Szyfrowane dane uwierzytelniające w spoczynku Zgodność z RODO
FAQ

Często zadawane pytania

Często zadawane pytania dotyczące połączeń z serwerem IMAP, portów, uwierzytelniania i migracji OAuth.

1
Połączenie serwera IMAP to sposób na dostęp do wiadomości e-mail przechowywanych na serwerze poczty e-mail. IMAP (Internet Message Access Protocol) pozwala na zarządzanie wiadomościami e-mail bez konieczności pobierania ich na urządzenie. Oznacza to, że możesz przeglądać, organizować i usuwać wiadomości bezpośrednio z serwera, a zmiany te będą widoczne na wszystkich urządzeniach, na których korzystasz z tego samego konta.

Połączenie z serwerem IMAP to trwała sesja TCP między klientem poczty e-mail a serwerem pocztowym, która wykorzystuje protokół Internet Message Access Protocol do synchronizowania, pobierania i zarządzania wiadomościami e-mail przechowywanymi na serwerze – bez ich pobierania lub usuwania lokalnie. W przeciwieństwie do POP3, IMAP przechowuje wiadomości na serwerze i synchronizuje stan (odczytane, oznaczone flagą, przeniesione) na wszystkich podłączonych urządzeniach. Dla deweloperów jest to podstawowy protokół do tworzenia integracji pocztowych, które działają w Gmailu, Outlooku i każdym standardowym. INTERFEJS API IMAP.

2
Z którego portu IMAP powinienem używać: 143 czy 993?

Użycie port 993 dla IMAP przez SSL/TLS (niejawny TLS). Jest to nowoczesny standard i jest wymagany przez wszystkich głównych dostawców usług w chmurze, w tym Gmail i Outlook. Port 143 służy do uaktualnień STARTTLS i jest odpowiedni tylko dla samodzielnie hostowanych serwerów poczty. Nigdy nie łącz się z serwerem poczty w chmurze na porcie 143 w środowisku produkcyjnym – większość teraz całkowicie odrzuca takie połączenia. Jeśli nie masz pewności, zawsze domyślnie używaj portu 993 z ssl=True.

3
Czy potrzebuję SSL/TLS do IMAP?

Tak, bez wyjątku. SSL/TLS jest obowiązkowy dla każdego połączenia serwera IMAP, które przesyła dane uwierzytelniające. Nowoczesne serwery pocztowe całkowicie odrzucają połączenia w postaci czystego tekstu. RFC 9051 (IMAP4rev2) formalnie wymaga TLS dla wszystkich uwierzytelnionych sesji. Zawsze używaj port 993 z jawnym TLS dla dostawców chmurowych. W przypadku połączenia z serwerem hostowanym lokalnie na porcie 143, należy przeprowadzić aktualizację do TLS za pomocą polecenia STARTTLS i zweryfikować certyfikat serwera - nigdy nie używaj ssl._create_unverified_context() w produkcji.

4
Czym jest adres serwera IMAP dla Gmaila?

Adres serwera IMAP dla Gmail to imap.gmail.com on port 993 z protokołem SSL/TLS. Przed połączeniem należy włączyć dostęp IMAP w Ustawieniach Gmaila w sekcji "Przekazywanie i POP/IMAP". Uwierzytelnianie wymaga hasła specyficznego dla aplikacji (jeśli włączono 2FA) lub OAuth 2.0 XOAUTH2 z zakresem https://mail.google.com/. Google ograniczył uwierzytelnianie podstawowe dla nowych aplikacji i zdecydowanie zaleca OAuth do wszelkich programistycznych dostępów IMAP.

5
Jaki jest adres serwera IMAP dla Outlooka i Microsoft 365?

Adres serwera IMAP dla osobistych kont Outlook.com i firmowych kont Microsoft 365 to outlook.office365.com on port 993 z SSL/TLS. Pamiętaj, że firma Microsoft wycofuje wsparcie dla uwierzytelniania podstawowego (nazwa użytkownika/hasło) dla protokołu IMAP w Grudzień 2026. Wszystkie integracje muszą zostać przeniesione do OAuth 2.0 XOAUTH2 przed tym terminem. Zobacz nasz Microsoft Graph OAuth dla Outlook instrukcja kroków migracji.

6
Czy potrzebuję hasła aplikacji do połączenia z IMAP?

Potrzebujesz hasła specyficznego dla aplikacji, jeśli Twoje konto ma włączone uwierzytelnianie dwuskładnikowe i używasz uwierzytelniania podstawowego (Basic Auth) dla IMAP. Hasła aplikacji to 16-znakowe tokeny generowane z ustawień bezpieczeństwa Twojego dostawcy (strona bezpieczeństwa konta Google dla Gmaila, Apple ID dla iCloud), które zastępują Twoje prawdziwe hasło, nie dając pełnego dostępu do konta. W przypadku produkcyjnych aplikacji wieloużytkownikowych, OAuth 2.0 jest zdecydowanie preferowany hasła specyficzne dla aplikacji – jest to bezpieczniejsze, nie wymaga przechowywania żadnych danych uwierzytelniających użytkownika w Twojej aplikacji i jest jedyną metodą, która pozostanie ważna po wycofaniu protokołu Microsoft Basic Auth w grudniu 2026 r.

7
Czy uwierzytelnianie podstawowe IMAP jest przestarzałe w 2026 roku?

Tak, dla usług Microsoft. Firma Microsoft potwierdziła ostateczne zakończenie wsparcia dla uwierzytelniania Basic w protokołach IMAP, POP3 i SMTP w Exchange Online w Grudzień 2026, wpływając na wszystkich najemców, w tym tych z istniejącymi zwolnieniami. Wszelkie integracje wykorzystujące uwierzytelnianie użytkownik/hasło do Outlooka lub Microsoft 365 IMAP przestaną działać po tym terminie. Google już ograniczyło dostęp do Basic Auth dla Gmaila i wymaga haseł do aplikacji lub OAuth do wszelkiego programowego dostępu od 2022 roku. Jeśli Twoja integracja IMAP łączy się z kontami Microsoft, musisz migrować do OAuth 2.0 XOAUTH2 przed grudniem 2026 r.

8
Jak połączyć się z IMAP przy użyciu uwierzytelniania OAuth 2.0?

Aby połączyć się z serwerem IMAP z użyciem OAuth 2.0, należy użyć mechanizmu SASL XOAUTH2. Po uzyskaniu tokena dostępu za pomocą standardowego przepływu kodu autoryzacyjnego OAuth, zakoduj ciąg znaków email\x01auth=Bearer {token}\x01\x01 jako base64, a następnie przekazać go do POTWIERDŹ XOAUTH2 Polecenie IMAP. Dla Gmaila, wymagany zakres to https://mail.google.com/. W przypadku Microsoft 365 użyj biblioteki MSAL do uzyskania tokenu z IMAP.AccessAsUser.All zakres. Tokeny dostępu wygasają po 3600 sekundach i muszą zostać odświeżone przed ponownym połączeniem - zaimplementuj kontrolę odświeżania tokenu przed każdą nową sesją IMAP. Zobacz pełne przykłady kodu w sekcji XOAUTH2 powyżej.

Nadal masz pytania dotyczące integracji IMAP? Nasz zespół pomoże Ci poruszać się w specyfikach dostawców, migracji OAuth i architekturze wielokontowej.

Porozmawiaj z ekspertem
pl_PLPL