email.encoders: Bộ mã hóa

Source code: Lib/email/encoders.py


Mô-đun này là một phần của email API cũ (Compat32). Trong API mới, chức năng được cung cấp bởi tham số cte của phương thức set_content().

Mô-đun này không được dùng nữa trong Python 3. Không nên gọi các hàm được cung cấp ở đây một cách rõ ràng vì lớp MIMEText đặt loại nội dung và tiêu đề CTE bằng cách sử dụng các giá trị _subtype_charset được truyền trong quá trình khởi tạo lớp đó.

Văn bản còn lại trong phần này là tài liệu gốc của mô-đun.

Khi tạo đối tượng Message từ đầu, bạn thường cần mã hóa tải trọng để truyền qua các máy chủ thư tuân thủ. Điều này đặc biệt đúng đối với các tin nhắn loại image/*text/* chứa dữ liệu nhị phân.

Gói email cung cấp một số bộ mã hóa tiện lợi trong mô-đun encoders. Các bộ mã hóa này thực tế được sử dụng bởi các hàm tạo của lớp MIMEAudioMIMEImage để cung cấp các mã hóa mặc định. Tất cả các hàm mã hóa đều lấy chính xác một đối số, đối tượng thông báo để mã hóa. Họ thường trích xuất tải trọng, mã hóa nó và đặt lại tải trọng về giá trị mới được mã hóa này. Họ cũng nên đặt tiêu đề Content-Transfer-Encoding cho phù hợp.

Lưu ý rằng các chức năng này không có ý nghĩa đối với tin nhắn nhiều phần. Thay vào đó, chúng phải được áp dụng cho các phần phụ riêng lẻ và sẽ tăng TypeError nếu truyền một thông báo có loại là nhiều phần.

Dưới đây là các chức năng mã hóa được cung cấp:

email.encoders.encode_quopri(msg)

Mã hóa tải trọng thành dạng có thể in được trong trích dẫn và đặt tiêu đề Content-Transfer-Encoding thành quoted-printable [1]. Đây là cách mã hóa tốt để sử dụng khi phần lớn tải trọng của bạn là dữ liệu có thể in được thông thường nhưng chứa một số ký tự không thể in được.

email.encoders.encode_base64(msg)

Mã hóa tải trọng thành dạng base64 và đặt tiêu đề Content-Transfer-Encoding thành base64. Đây là cách mã hóa tốt để sử dụng khi phần lớn tải trọng của bạn là dữ liệu không thể in được vì đây là dạng nhỏ gọn hơn dạng có thể in được trích dẫn. Hạn chế của mã hóa base64 là nó khiến văn bản không thể đọc được.

email.encoders.encode_7or8bit(msg)

Điều này thực tế không sửa đổi tải trọng của tin nhắn nhưng nó đặt tiêu đề Content-Transfer-Encoding thành 7bit hoặc 8bit nếu thích hợp, dựa trên dữ liệu tải trọng.

email.encoders.encode_noop(msg)

Điều này không làm gì cả; nó thậm chí không đặt tiêu đề Content-Transfer-Encoding.

Chú thích cuối trang