email.mime: Tạo email và đối tượng MIME từ đầu¶
Source code: Lib/email/mime/
Mô-đun này là một phần của email API cũ (Compat32). Chức năng của nó được thay thế một phần bằng contentmanager trong API mới, nhưng trong một số ứng dụng nhất định, các lớp này vẫn có thể hữu ích, ngay cả trong mã không kế thừa.
Thông thường, bạn nhận được cấu trúc đối tượng thông báo bằng cách chuyển một tệp hoặc một số văn bản tới trình phân tích cú pháp, trình phân tích cú pháp này sẽ phân tích văn bản và trả về đối tượng thông báo gốc. Tuy nhiên, bạn cũng có thể xây dựng cấu trúc thông báo hoàn chỉnh từ đầu hoặc thậm chí các đối tượng Message riêng lẻ bằng tay. Trên thực tế, bạn cũng có thể lấy cấu trúc hiện có và thêm các đối tượng Message mới, di chuyển chúng xung quanh, v.v. Điều này tạo ra một giao diện rất thuận tiện cho việc cắt và cắt các thông báo MIME.
Bạn có thể tạo cấu trúc đối tượng mới bằng cách tạo các phiên bản Message, thêm tệp đính kèm và tất cả các tiêu đề thích hợp theo cách thủ công. Tuy nhiên, đối với các tin nhắn MIME, gói email cung cấp một số lớp con tiện lợi để giúp mọi việc dễ dàng hơn.
Dưới đây là các lớp học:
- class email.mime.base.MIMEBase(_maintype, _subtype, *, policy=compat32, **_params)¶
Mô-đun:
email.mime.baseĐây là lớp cơ sở cho tất cả các lớp con dành riêng cho MIME của
Message. Thông thường, bạn sẽ không tạo các phiên bản cụ thể củaMIMEBase, mặc dù bạn có thể.MIMEBaseđược cung cấp chủ yếu dưới dạng lớp cơ sở thuận tiện cho các lớp con nhận biết MIME cụ thể hơn._maintype là loại Content-Type chính (ví dụ: text hoặc image) và _subtype là loại phụ Content-Type (ví dụ: plain hoặc gif). _params là từ điển khóa/giá trị tham số và được truyền trực tiếp tới
Message.add_header.Nếu policy được chỉ định, (mặc định là chính sách
compat32), nó sẽ được chuyển tớiMessage.Lớp
MIMEBaseluôn thêm tiêu đề Content-Type (dựa trên _maintype, _subtype và _params) và tiêu đề MIME-Version (luôn được đặt thành1.0).Thay đổi trong phiên bản 3.6: Đã thêm tham số chỉ từ khóa policy.
- class email.mime.nonmultipart.MIMENonMultipart¶
Mô-đun:
email.mime.nonmultipartMột lớp con của
MIMEBase, đây là lớp cơ sở trung gian dành cho các tin nhắn MIME không phải là multipart. Mục đích chính của lớp này là ngăn chặn việc sử dụng phương thứcattach(), phương thức này chỉ có ý nghĩa đối với các tin nhắn multipart. Nếuattach()được gọi, một ngoại lệMultipartConversionErrorsẽ xuất hiện.
- class email.mime.multipart.MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None, *, policy=compat32, **_params)¶
Mô-đun:
email.mime.multipartMột lớp con của
MIMEBase, đây là lớp cơ sở trung gian cho các tin nhắn MIME là multipart. _subtype tùy chọn mặc định là mixed, nhưng có thể được sử dụng để chỉ định loại phụ của tin nhắn. Tiêu đề Content-Type của multipart/_subtype sẽ được thêm vào đối tượng tin nhắn. Tiêu đề MIME-Version cũng sẽ được thêm vào.boundary tùy chọn là chuỗi ranh giới nhiều phần. Khi
None(mặc định), ranh giới được tính khi cần (ví dụ: khi tin nhắn được tuần tự hóa)._subparts là một chuỗi các phần phụ ban đầu dành cho tải trọng. Phải có khả năng chuyển đổi chuỗi này thành một danh sách. Bạn luôn có thể đính kèm các phần phụ mới vào tin nhắn bằng phương pháp
Message.attach.Đối số policy tùy chọn mặc định là
compat32.Các tham số bổ sung cho tiêu đề Content-Type được lấy từ các đối số từ khóa hoặc được chuyển vào đối số _params, là một từ điển từ khóa.
Thay đổi trong phiên bản 3.6: Đã thêm tham số chỉ từ khóa policy.
- class email.mime.application.MIMEApplication(_data, _subtype='octet-stream', _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)¶
Mô-đun:
email.mime.applicationMột lớp con của
MIMENonMultipart, lớpMIMEApplicationđược sử dụng để biểu diễn các đối tượng thông báo MIME thuộc loại chính application. _data chứa các byte cho dữ liệu ứng dụng thô. _subtype tùy chọn chỉ định loại phụ MIME và mặc định là octet-stream._encoder tùy chọn là một hàm có thể gọi được (tức là hàm) sẽ thực hiện mã hóa thực tế dữ liệu để truyền tải. Lệnh gọi này nhận một đối số, đó là phiên bản
MIMEApplication. Nó nên sử dụngget_payload()vàset_payload()để thay đổi tải trọng sang dạng được mã hóa. Nó cũng nên thêm bất kỳ Content-Transfer-Encoding hoặc các tiêu đề khác vào đối tượng tin nhắn nếu cần. Mã hóa mặc định là base64. Xem mô-đunemail.encodersđể biết danh sách các bộ mã hóa tích hợp.Đối số policy tùy chọn mặc định là
compat32._params được chuyển thẳng tới hàm tạo của lớp cơ sở.
Thay đổi trong phiên bản 3.6: Đã thêm tham số chỉ từ khóa policy.
- class email.mime.audio.MIMEAudio(_audiodata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)¶
Mô-đun:
email.mime.audioMột lớp con của
MIMENonMultipart, lớpMIMEAudiođược sử dụng để tạo các đối tượng thông báo MIME thuộc loại chính audio. _audiodata chứa các byte cho dữ liệu âm thanh thô. Nếu dữ liệu này có thể được giải mã dưới dạng au, wav, aiff hoặc aifc thì loại phụ sẽ tự động được đưa vào tiêu đề Content-Type. Nếu không, bạn có thể chỉ định rõ ràng loại phụ âm thanh thông qua đối số _subtype. Nếu không thể đoán được loại phụ và _subtype không được đưa ra thìTypeErrorsẽ được nâng lên._encoder tùy chọn là một chức năng có thể gọi được (tức là chức năng) sẽ thực hiện mã hóa thực tế dữ liệu âm thanh để truyền tải. Lệnh gọi này nhận một đối số, đó là phiên bản
MIMEAudio. Nó nên sử dụngget_payload()vàset_payload()để thay đổi tải trọng sang dạng được mã hóa. Nó cũng nên thêm bất kỳ Content-Transfer-Encoding hoặc các tiêu đề khác vào đối tượng tin nhắn nếu cần. Mã hóa mặc định là base64. Xem mô-đunemail.encodersđể biết danh sách các bộ mã hóa tích hợp.Đối số policy tùy chọn mặc định là
compat32._params được chuyển thẳng tới hàm tạo của lớp cơ sở.
Thay đổi trong phiên bản 3.6: Đã thêm tham số chỉ từ khóa policy.
- class email.mime.image.MIMEImage(_imagedata, _subtype=None, _encoder=email.encoders.encode_base64, *, policy=compat32, **_params)¶
Mô-đun:
email.mime.imageMột lớp con của
MIMENonMultipart, lớpMIMEImageđược sử dụng để tạo các đối tượng thông báo MIME thuộc loại chính image. _imagedata chứa các byte cho dữ liệu hình ảnh thô. Nếu loại dữ liệu này có thể được phát hiện (đã thử jpeg, png, gif, tiff, rgb, pbm, pgm, ppm, rast, xbm, bmp, webp và exr), thì loại phụ sẽ tự động được đưa vào tiêu đề Content-Type. Nếu không, bạn có thể chỉ định rõ ràng loại hình ảnh phụ thông qua đối số _subtype. Nếu không thể đoán được loại phụ và _subtype không được đưa ra thìTypeErrorsẽ được nâng lên._encoder tùy chọn là một hàm có thể gọi được (tức là hàm) sẽ thực hiện mã hóa thực tế dữ liệu hình ảnh để truyền tải. Lệnh gọi này nhận một đối số, đó là phiên bản
MIMEImage. Nó nên sử dụngget_payload()vàset_payload()để thay đổi tải trọng sang dạng được mã hóa. Nó cũng nên thêm bất kỳ Content-Transfer-Encoding hoặc các tiêu đề khác vào đối tượng tin nhắn nếu cần. Mã hóa mặc định là base64. Xem mô-đunemail.encodersđể biết danh sách các bộ mã hóa tích hợp.Đối số policy tùy chọn mặc định là
compat32._params được chuyển thẳng tới hàm tạo
MIMEBase.Thay đổi trong phiên bản 3.6: Đã thêm tham số chỉ từ khóa policy.
- class email.mime.message.MIMEMessage(_msg, _subtype='rfc822', *, policy=compat32)¶
Mô-đun:
email.mime.messageMột lớp con của
MIMENonMultipart, lớpMIMEMessageđược sử dụng để tạo các đối tượng MIME thuộc loại chính message. _msg được sử dụng làm tải trọng và phải là một phiên bản của lớpMessage(hoặc một lớp con của lớp đó), nếu không thìTypeErrorsẽ được nâng lên.Tùy chọn _subtype đặt loại phụ của tin nhắn; nó mặc định là rfc822.
Đối số policy tùy chọn mặc định là
compat32.Thay đổi trong phiên bản 3.6: Đã thêm tham số chỉ từ khóa policy.
- class email.mime.text.MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32)¶
Mô-đun:
email.mime.textMột lớp con của
MIMENonMultipart, lớpMIMETextđược sử dụng để tạo các đối tượng MIME thuộc loại chính text. _text là chuỗi cho tải trọng. _subtype là loại nhỏ và mặc định là plain. _charset là bộ ký tự của văn bản và được truyền dưới dạng đối số cho hàm tạoMIMENonMultipart; nó mặc định làus-asciinếu chuỗi chỉ chứa các điểm mãasciivàutf-8nếu không. Tham số _charset chấp nhận một chuỗi hoặc một phiên bảnCharset.Trừ khi đối số _charset được đặt rõ ràng thành
None, đối tượng MIMEText được tạo sẽ có cả tiêu đề Content-Type với tham sốcharsetvà tiêu đề Content-Transfer-Encoding. Điều này có nghĩa là lệnh gọiset_payloadtiếp theo sẽ không dẫn đến tải trọng được mã hóa, ngay cả khi bộ ký tự được truyền trong lệnhset_payload. Bạn có thể "đặt lại" hành vi này bằng cách xóa tiêu đềContent-Transfer-Encoding, sau đó lệnh gọiset_payloadsẽ tự động mã hóa tải trọng mới (và thêm tiêu đề Content-Transfer-Encoding mới).Đối số policy tùy chọn mặc định là
compat32.Thay đổi trong phiên bản 3.5: _charset cũng chấp nhận các phiên bản
Charset.Thay đổi trong phiên bản 3.6: Đã thêm tham số chỉ từ khóa policy.