email.mime: Skapa e-post- och MIME-objekt från grunden

Källkod: Lib/email/mime/


Denna modul är en del av det äldre (Compat32) e-post-API:et. Dess funktionalitet ersätts delvis av contentmanager i det nya API:et, men i vissa tillämpningar kan dessa klasser fortfarande vara användbara, även i icke-legacy-kod.

Vanligtvis får du en meddelandeobjektstruktur genom att skicka en fil eller lite text till en parser, som tolkar texten och returnerar rotmeddelandeobjektet. Men du kan också bygga en komplett meddelandestruktur från grunden, eller till och med enskilda Message-objekt för hand. Faktum är att du också kan ta en befintlig struktur och lägga till nya Message-objekt, flytta runt dem osv. Detta är ett mycket praktiskt gränssnitt för att dela upp MIME-meddelanden.

Du kan skapa en ny objektstruktur genom att skapa Message-instanser, lägga till bilagor och alla lämpliga rubriker manuellt. För MIME-meddelanden tillhandahåller dock paketet email några praktiska underklasser för att göra saker och ting enklare.

Här är klasserna:

class email.mime.base.MIMEBase(_maintype, _subtype, *, policy=compat32, **_params)

Modul: email.mime.base

Detta är basklassen för alla MIME-specifika underklasser av Message. Vanligtvis kommer du inte att skapa instanser specifikt av MIMEBase, även om du kan. MIMEBase tillhandahålls främst som en bekväm basklass för mer specifika MIME-medvetna underklasser.

_maintype är huvudtypen för Content-Type (t.ex. text eller image), och _subtype är den mindre typen för Content-Type (t.ex. plain eller gif). _params är en nyckel/värde-ordbok för en parameter och skickas direkt till Message.add_header.

Om policy anges (standard är policyn compat32) kommer den att skickas till Message.

Klassen MIMEBase lägger alltid till ett Content-Type-huvud (baserat på _maintype, _subtype och _params) och ett MIME-Version-huvud (alltid inställt på 1.0).

Ändrad i version 3.6: Lagt till policy parameter för endast nyckelord.

class email.mime.nonmultipart.MIMENonMultipart

Modul: email.mime.nonmultipart

Detta är en underklass till MIMEBase och är en mellanliggande basklass för MIME-meddelanden som inte är multipart. Det primära syftet med denna klass är att förhindra användningen av metoden attach(), som bara är meningsfull för multipart-meddelanden. Om attach() anropas, uppstår ett MultipartConversionError undantag.

class email.mime.multipart.MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None, *, policy=compat32, **_params)

Modul: email.mime.multipart

Detta är en underklass till MIMEBase och är en mellanliggande basklass för MIME-meddelanden som är multipart. Det valfria _subtype är standardvärdet för mixed, men kan användas för att ange meddelandets subtyp. Ett Content-Type-huvud av multipart/_subtype läggs till i meddelandeobjektet. En rubrik av typen MIME-Version kommer också att läggas till.

Valfritt boundary är strängen för flerpartsbegränsningen. Om None (standard) används beräknas gränsen vid behov (t.ex. när meddelandet serialiseras).

_subparts är en sekvens av initiala subparts för nyttolasten. Det måste vara möjligt att konvertera denna sekvens till en lista. Du kan alltid bifoga nya subparts till meddelandet genom att använda metoden Message.attach.

Det valfria policy-argumentet är som standard compat32.

Ytterligare parametrar för rubriken Content-Type hämtas från nyckelordsargumenten eller skickas till argumentet _params, som är en nyckelordsordbok.

Ändrad i version 3.6: Lagt till policy parameter för endast nyckelord.

class email.mime.application.MIMEApplication(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

Modul: email.mime.application

Klassen MIMEApplication är en underklass till MIMENonMultipart och används för att representera MIME-meddelandeobjekt av huvudtypen application. _data innehåller bytes för de råa applikationsdata. Den valfria _subtype anger MIME-subtypen och standardvärdet är octet-stream.

Valfri _encoder är en anropsbar (dvs. funktion) som utför den faktiska kodningen av data för transport. Denna anropsbarhet tar ett argument, vilket är MIMEApplication-instansen. Den bör använda get_payload() och set_payload() för att ändra payload till kodad form. Det bör också lägga till eventuella Content-Transfer-Encoding eller andra rubriker till meddelandeobjektet vid behov. Standardkodningen är base64. Se modulen email.encoders för en lista över de inbyggda kodarna.

Det valfria policy-argumentet är som standard compat32.

_params skickas rakt igenom till basklassens konstruktör.

Ändrad i version 3.6: Lagt till policy parameter för endast nyckelord.

class email.mime.audio.MIMEAudio(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

Modul: email.mime.audio

Klassen MIMEAudio är en underklass till MIMENonMultipart och används för att skapa MIME-meddelandeobjekt av huvudtypen audio. _audiodata innehåller bytena för de råa ljuddata. Om dessa data kan avkodas som au, wav, aiff eller aifc, kommer subtypen automatiskt att inkluderas i Content-Type-headern. Annars kan du uttryckligen ange ljudundertypen via argumentet _subtype. Om den mindre typen inte kunde gissas och _subtype inte gavs, kommer TypeError att tas upp.

Valfri _encoder är en anropsbar (dvs. funktion) som utför den faktiska kodningen av ljuddata för transport. Denna anropsbarhet tar ett argument, vilket är MIMEAudio-instansen. Den bör använda get_payload() och set_payload() för att ändra payload till kodad form. Det bör också lägga till eventuella Content-Transfer-Encoding eller andra rubriker till meddelandeobjektet vid behov. Standardkodningen är base64. Se modulen email.encoders för en lista över de inbyggda kodarna.

Det valfria policy-argumentet är som standard compat32.

_params skickas rakt igenom till basklassens konstruktör.

Ändrad i version 3.6: Lagt till policy parameter för endast nyckelord.

class email.mime.image.MIMEImage(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)

Modul: email.mime.image

Klassen MIMEImage är en underklass till MIMENonMultipart och används för att skapa MIME-meddelandeobjekt av huvudtypen image. _imagedata innehåller byte för råa bilddata. Om denna datatyp kan detekteras (jpeg, png, gif, tiff, rgb, pbm, pgm, ppm, rast, xbm, bmp, webp och exr försökte), kommer subtypen automatiskt att inkluderas i Content-Type-rubriken. Annars kan du uttryckligen ange bildens subtyp via argumentet _subtype. Om den mindre typen inte kunde gissas och _subtype inte gavs, så kommer TypeError att uppstå.

Valfri _encoder är en anropsbar (dvs. funktion) som utför den faktiska kodningen av bilddata för transport. Denna anropsbarhet tar ett argument, vilket är MIMEImage-instansen. Den bör använda get_payload() och set_payload() för att ändra payload till kodad form. Det bör också lägga till eventuella Content-Transfer-Encoding eller andra rubriker till meddelandeobjektet vid behov. Standardkodningen är base64. Se modulen email.encoders för en lista över de inbyggda kodarna.

Det valfria policy-argumentet är som standard compat32.

_params skickas direkt till MIMEBase-konstruktören.

Ändrad i version 3.6: Lagt till policy parameter för endast nyckelord.

class email.mime.message.MIMEMessage(_msg, _subtype='rfc822', *, policy=compat32)

Modul: email.mime.message

Klassen MIMEMessage är en underklass till MIMENonMultipart och används för att skapa MIME-objekt av huvudtypen message. _msg används som nyttolast och måste vara en instans av klassen Message (eller en underklass av denna), annars uppstår ett TypeError.

Valfri _subtype anger meddelandets subtyp; standardvärdet är rfc822.

Det valfria policy-argumentet är som standard compat32.

Ändrad i version 3.6: Lagt till policy parameter för endast nyckelord.

class email.mime.text.MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32)

Modul: email.mime.text

Klassen MIMEText är en underklass till MIMENonMultipart och används för att skapa MIME-objekt av huvudtypen text. _text är strängen för nyttolasten. _subtype är den mindre typen och standardvärdet är plain. _charset är textens teckenuppsättning och skickas som ett argument till MIMENonMultipart-konstruktören; standardvärdet är us-ascii om strängen endast innehåller ascii-kodpunkter och annars utf-8. Parametern _charset accepterar antingen en sträng eller en instans av Charset.

Om inte argumentet _charset uttryckligen sätts till None, kommer det MIMEText-objekt som skapas att ha både en Content-Type header med en charset parameter och en Content-Transfer-Encoding header. Detta innebär att ett efterföljande anrop av set_payload inte kommer att resultera i en kodad nyttolast, även om en teckenuppsättning anges i kommandot set_payload. Du kan ”återställa” detta beteende genom att ta bort rubriken Content-Transfer-Encoding, varefter ett anrop av set_payload automatiskt kodar den nya nyttolasten (och lägger till en ny rubrik Content-Transfer-Encoding`).

Det valfria policy-argumentet är som standard compat32.

Ändrad i version 3.5: _charset accepterar även Charset-instanser.

Ändrad i version 3.6: Lagt till policy parameter för endast nyckelord.