19.1. email
--- Paket penanganan email dan MIMEΒΆ
Kode sumber: Lib/email/__init__.py
The email
package is a library for managing email messages. It is
specifically not designed to do any sending of email messages to SMTP
(RFC 2821), NNTP, or other servers; those are functions of modules such as
smtplib
and nntplib
. The email
package attempts to be as
RFC-compliant as possible, supporting RFC 5233 and RFC 6532, as well as
such MIME-related RFCs as RFC 2045, RFC 2046, RFC 2047, RFC 2183,
and RFC 2231.
Struktur keseluruhan paket email dapat dibagi menjadi tiga komponen utama, ditambah komponen keempat yang mengontrol perilaku komponen lainnya.
Komponen utama dari paket tersebut adalah "model objek" yang mewakili pesan email. Aplikasi berinteraksi dengan paket terutama melalui antarmuka model objek yang ditentukan dalam sub-modul message
. Aplikasi dapat menggunakan API ini untuk mengajukan pertanyaan tentang email yang sudah ada, membuat email baru, atau untuk menambah atau menghapus subkomponen email yang menggunakan antarmuka model objek yang sama. Artinya, mengikuti sifat pesan email dan subkomponen MIME-nya, model objek email adalah struktur pohon objek yang semuanya menyediakan API EmailMessage
.
Dua komponen utama lainnya dari paket tersebut adalah parser
dan generator
. Parser mengambil versi serial dari pesan email (aliran byte) dan mengubahnya menjadi pohon objek EmailMessage
. Generator mengambil EmailMessage
dan mengubahnya kembali menjadi aliran byte serial. (Pengurai dan generator juga menangani aliran karakter teks, tetapi penggunaan ini tidak disarankan karena terlalu mudah untuk berakhir dengan pesan yang tidak valid dalam satu atau lain cara.)
Komponen kontrolnya adalah modul policy
. Setiap EmailMessage
, setiap generator
, dan setiap parser
memiliki objek terkait policy
yang mengontrol perilakunya. Biasanya aplikasi hanya perlu menetapkan kebijakan ketika EmailMessage
dibuat, baik dengan langsung membuat instance EmailMessage
untuk membuat email baru, atau dengan mengurai aliran input menggunakan parser
. Namun kebijakan tersebut dapat diubah jika pesan diserialkan menggunakan generator
. Hal ini memungkinkan, misalnya, pesan email umum diurai dari disk, tetapi untuk membuat serialnya menggunakan pengaturan SMTP standar saat mengirimnya ke server email.
The email package does its best to hide the details of the various governing RFCs from the application. Conceptually the application should be able to treat the email message as a structured tree of unicode text and binary attachments, without having to worry about how these are represented when serialized. In practice, however, it is often necessary to be aware of at least some of the rules governing MIME messages and their structure, specifically the names and nature of the MIME "content types" and how they identify multipart documents. For the most part this knowledge should only be required for more complex applications, and even then it should only be the high level structure in question, and not the details of how those structures are represented. Since MIME content types are used widely in modern internet software (not just email), this will be a familiar concept to many programmers.
The following sections describe the functionality of the email
package.
We start with the message
object model, which is the primary
interface an application will use, and follow that with the
parser
and generator
components. Then we cover the
policy
controls, which completes the treatment of the main
components of the library.
The next three sections cover the exceptions the package may raise and the
defects (non-compliance with the RFCs) that the parser
may
detect. Then we cover the headerregistry
and the
contentmanager
sub-components, which provide tools for doing more
detailed manipulation of headers and payloads, respectively. Both of these
components contain features relevant to consuming and producing non-trivial
messages, but also document their extensibility APIs, which will be of interest
to advanced applications.
Following those is a set of examples of using the fundamental parts of the APIs covered in the preceding sections.
The foregoing represent the modern (unicode friendly) API of the email package.
The remaining sections, starting with the Message
class, cover the legacy compat32
API that deals much more
directly with the details of how email messages are represented. The
compat32
API does not hide the details of the RFCs from
the application, but for applications that need to operate at that level, they
can be useful tools. This documentation is also relevant for applications that
are still using the compat32
API for backward
compatibility reasons.
Berubah pada versi 3.6: Docs reorganized and rewritten to promote the new
EmailMessage
/EmailPolicy
API.
Contents of the email
package documentation:
- 19.1.1.
email.message
: Representing an email message - 19.1.2.
email.parser
: Parsing email messages - 19.1.3.
email.generator
: Generating MIME documents - 19.1.4.
email.policy
: Policy Objects - 19.1.5.
email.errors
: Exception and Defect classes - 19.1.6.
email.headerregistry
: Custom Header Objects - 19.1.7.
email.contentmanager
: Managing MIME Content - 19.1.8.
email
: Examples
Legacy API:
- 19.1.9.
email.message.Message
: Representing an email message using thecompat32
API - 19.1.10.
email.mime
: Creating email and MIME objects from scratch - 19.1.11.
email.header
: Internationalized headers - 19.1.12.
email.charset
: Representing character sets - 19.1.13.
email.encoders
: Encoders - 19.1.14.
email.utils
: Miscellaneous utilities - 19.1.15.
email.iterators
: Iterators
Lihat juga
- Module
smtplib
SMTP (Simple Mail Transport Protocol) client
- Module
poplib
POP (Post Office Protocol) client
- Module
imaplib
IMAP (Internet Message Access Protocol) client
- Module
nntplib
NNTP (Net News Transport Protocol) client
- Module
mailbox
Tools for creating, reading, and managing collections of messages on disk using a variety standard formats.
- Module
smtpd
SMTP server framework (primarily useful for testing)