poplib — POP3-protokollklient

Källkod: Lib/poplib.py


Den här modulen definierar en klass, POP3, som kapslar in en anslutning till en POP3-server och implementerar protokollet enligt definitionen i RFC 1939. Klassen POP3 stöder både den minimala och den valfria kommandouppsättningen från RFC 1939. Klassen POP3 stöder också kommandot STLS som introducerades i RFC 2595 för att möjliggöra krypterad kommunikation på en redan etablerad anslutning.

Dessutom innehåller den här modulen en klass POP3_SSL, som ger stöd för anslutning till POP3-servrar som använder SSL som underliggande protokollskikt.

Observera att POP3, även om det har ett brett stöd, är föråldrat. Kvaliteten på implementeringen av POP3-servrar varierar mycket och alltför många är ganska dåliga. Om din e-postserver stöder IMAP är det bättre att använda klassen imaplib.IMAP4, eftersom IMAP-servrar tenderar att vara bättre implementerade.

Tillgänglighet: not WASI.

Den här modulen fungerar inte eller är inte tillgänglig på WebAssembly. Se WebAssembly-plattformar för mer information.

Modulen poplib innehåller två klasser:

class poplib.POP3(host, port=POP3_PORT[, timeout])

Denna klass implementerar det faktiska POP3-protokollet. Anslutningen skapas när instansen initialiseras. Om port utelämnas används POP3:s standardport (110). Den valfria parametern timeout anger en timeout i sekunder för anslutningsförsöket (om den inte anges kommer den globala standardinställningen för timeout att användas).

Utlöser en auditing event poplib.connect med argumenten self, host, port.

Alla kommandon ger upphov till en auditing event poplib.putline med argumenten self och line, där line är de bytes som ska skickas till fjärrvärden.

Ändrad i version 3.9: Om parametern timeout är noll kommer den att skapa ett ValueError för att förhindra att en icke-blockerande socket skapas.

class poplib.POP3_SSL(host, port=POP3_SSL_PORT, *, timeout=None, context=None)

Detta är en underklass till POP3 som ansluter till servern via ett SSL-krypterat uttag. Om port inte specificeras används 995, standardporten för POP3 över SSL. timeout fungerar som i konstruktören för POP3. context är ett valfritt ssl.SSLContext-objekt som gör det möjligt att samla SSL-konfigurationsalternativ, certifikat och privata nycklar i en enda (potentiellt långlivad) struktur. Läs Överväganden om säkerhet för bästa praxis.

Utlöser en auditing event poplib.connect med argumenten self, host, port.

Alla kommandon ger upphov till en auditing event poplib.putline med argumenten self och line, där line är de bytes som ska skickas till fjärrvärden.

Ändrad i version 3.2: parameter context har lagts till.

Ändrad i version 3.4: Klassen stöder nu kontroll av värdnamn med ssl.SSLContext.check_hostname och Server Name Indication (se ssl.HAS_SNI).

Ändrad i version 3.9: Om parametern timeout är noll kommer den att skapa ett ValueError för att förhindra att en icke-blockerande socket skapas.

Ändrad i version 3.12: De föråldrade parametrarna keyfile och certfile har tagits bort.

Ett undantag är definierat som ett attribut för modulen poplib:

exception poplib.error_proto

Undantag som uppstår vid eventuella fel från denna modul (fel från modulen socket fångas inte upp). Anledningen till undantaget skickas till konstruktören som en sträng.

Se även

Modul imaplib

Pythons standardmodul för IMAP.

Vanliga frågor om Fetchmail

FAQ för POP/IMAP-klienten fetchmail samlar information om POP3-servervariationer och RFC-avvikelser som kan vara användbar om du behöver skriva ett program som bygger på POP-protokollet.

POP3-objekt

Alla POP3-kommandon representeras av metoder med samma namn, i gemener; de flesta returnerar den svarstext som skickas av servern.

En POP3-instans har följande metoder:

POP3.set_debuglevel(level)

Ställ in instansens felsökningsnivå. Detta styr hur mycket felsökningsutdata som skrivs ut. Standardvärdet, 0, ger ingen felsökningsutskrift. Ett värde på 1 ger en måttlig mängd felsökningsutdata, i allmänhet en enda rad per begäran. Ett värde på 2 eller högre ger maximal mängd felsökningsutdata och loggar varje rad som skickas och tas emot på kontrollanslutningen.

POP3.getwelcome()

Returnerar hälsningssträngen som skickas av POP3-servern.

POP3.capa()

Frågar efter serverns kapacitet enligt specifikationen i RFC 2449. Returnerar en ordbok i form av {'name': ['param'...]}.

Tillagd i version 3.4.

POP3.user(username)

Skicka användarkommando, svaret bör indikera att ett lösenord krävs.

POP3.pass_(password)

Skicka lösenord, svaret innehåller antal meddelanden och brevlådans storlek. Obs: brevlådan på servern är låst tills quit() anropas.

POP3.apop(user, secret)

Använd den säkrare APOP-autentiseringen för att logga in på POP3-servern.

POP3.rpop(user)

Använd RPOP-autentisering (liknande UNIX r-kommandon) för att logga in på POP3-servern.

POP3.stat()

Hämta status för brevlådan. Resultatet är en tupel av 2 heltal: (antal meddelanden, brevlådans storlek).

POP3.list([which])

Begär meddelandelista, resultatet är i formen (response, ['mesg_num octets', ...], octets). Om which anges, är det meddelandet som ska listas.

POP3.retr(which)

Hämta hela meddelandenumret which och sätt dess ”seen flag”. Resultatet är i form (svar, ['rad', ...], oktetter).

POP3.dele(which)

Flagga meddelandenummer vilket som ska raderas. På de flesta servrar utförs inte raderingar förrän QUIT (det stora undantaget är Eudora QPOP, som avsiktligt bryter mot RFC genom att göra väntande raderingar vid varje frånkoppling).

POP3.rset()

Ta bort eventuella raderingsmarkeringar för brevlådan.

POP3.noop()

Gör ingenting. Kan användas som en ”keep-alive”.

POP3.quit()

Signoff: bekräfta ändringar, lås upp brevlådan, släpp anslutningen.

POP3.top(which, howmuch)

Hämtar meddelanderubriken plus hur många rader av meddelandet efter rubriken för meddelandenummer vilket. Resultatet är i formen (response, ['line', ...], octets).

POP3-kommandot TOP som används i den här metoden sätter, till skillnad från RETR-kommandot, inte meddelandets seen-flagga; tyvärr är TOP dåligt specificerat i RFC och bryts ofta i servrar av annat märke. Testa den här metoden för hand mot de POP3-servrar du kommer att använda innan du litar på den.

POP3.uidl(which=None)

Returnerar en lista med unika id för meddelandet. Om which anges innehåller resultatet det unika id:t för meddelandet i form av 'response mesgnum uid, annars är resultatet listan (response, ['mesgnum uid', ...], octets).

POP3.utf8()

Försök att byta till UTF-8-läge. Returnerar serversvaret om det lyckas, ger error_proto om det inte lyckas. Specificeras i RFC 6856.

Tillagd i version 3.5.

POP3.stls(context=None)

Starta en TLS-session på den aktiva anslutningen enligt specifikationen i RFC 2595. Detta är endast tillåtet före användarautentisering

context-parametern är ett ssl.SSLContext-objekt som gör det möjligt att samla SSL-konfigurationsalternativ, certifikat och privata nycklar i en enda (potentiellt långlivad) struktur. Läs Överväganden om säkerhet för bästa praxis.

Denna metod stöder kontroll av värdnamn via ssl.SSLContext.check_hostname och Server Name Indication (se ssl.HAS_SNI).

Tillagd i version 3.4.

Instanser av POP3_SSL har inga ytterligare metoder. Gränssnittet för denna subklass är identiskt med dess förälder.

POP3-exempel

Här är ett minimalt exempel (utan felkontroll) som öppnar en brevlåda och hämtar och skriver ut alla meddelanden:

import getpass, poplib

M = poplib.POP3('localhost')
M.user(getpass.getuser())
M.pass_(getpass.getpass())
numMessages = len(M.list()[1])
for i in range(numMessages):
    for j in M.retr(i+1)[1]:
        print(j)

I slutet av modulen finns ett testavsnitt som innehåller ett mer omfattande exempel på användning.