poplib --- ứng dụng khách giao thức POP3¶
Source code: Lib/poplib.py
Mô-đun này định nghĩa một lớp, POP3, đóng gói kết nối đến máy chủ POP3 và thực hiện giao thức như được định nghĩa trong RFC 1939. Lớp POP3 hỗ trợ cả bộ lệnh tối thiểu và tùy chọn từ RFC 1939. Lớp POP3 cũng hỗ trợ lệnh STLS được giới thiệu trong RFC 2595 để cho phép giao tiếp được mã hóa trên kết nối đã được thiết lập.
Ngoài ra, mô-đun này cung cấp lớp POP3_SSL, lớp này cung cấp hỗ trợ kết nối với máy chủ POP3 sử dụng SSL làm lớp giao thức cơ bản.
Lưu ý rằng POP3, mặc dù được hỗ trợ rộng rãi nhưng đã lỗi thời. Chất lượng triển khai của các máy chủ POP3 rất khác nhau và có quá nhiều máy chủ khá kém. Nếu máy chủ thư của bạn hỗ trợ IMAP, tốt hơn hết bạn nên sử dụng lớp imaplib.IMAP4, vì các máy chủ IMAP có xu hướng được triển khai tốt hơn.
sẵn có: not WASI.
Mô-đun này không hoạt động hoặc không có trên WebAssembly. Xem Nền tảng WebAssugging để biết thêm thông tin.
Mô-đun poplib cung cấp hai lớp:
- class poplib.POP3(host, port=POP3_PORT[, timeout])¶
Lớp này thực hiện giao thức POP3 thực tế. Kết nối được tạo khi phiên bản được khởi tạo. Nếu port bị bỏ qua, cổng POP3 tiêu chuẩn (110) sẽ được sử dụng. Tham số timeout tùy chọn chỉ định thời gian chờ tính bằng giây cho lần thử kết nối (nếu không được chỉ định, cài đặt thời gian chờ mặc định chung sẽ được sử dụng).
Tăng một auditing event
poplib.connectvới các đối sốself,host,port.Tất cả các lệnh sẽ đưa ra một auditing event
poplib.putlinevới các đối sốselfvàline, trong đólinelà các byte sắp được gửi đến máy chủ từ xa.Thay đổi trong phiên bản 3.9: Nếu tham số timeout được đặt thành 0, nó sẽ tăng
ValueErrorđể ngăn việc tạo ổ cắm không chặn.
- class poplib.POP3_SSL(host, port=POP3_SSL_PORT, *, timeout=None, context=None)¶
Đây là lớp con của
POP3kết nối với máy chủ qua ổ cắm được mã hóa SSL. Nếu port không được chỉ định, 995, cổng POP3-over-SSL tiêu chuẩn sẽ được sử dụng. timeout hoạt động giống như trong hàm tạoPOP3. context là một đối tượngssl.SSLContexttùy chọn cho phép gộp các tùy chọn cấu hình, chứng chỉ và khóa riêng của SSL vào một cấu trúc duy nhất (có khả năng tồn tại lâu dài). Vui lòng đọc Cân nhắc về bảo mật để biết cách thực hành tốt nhất.Tăng một auditing event
poplib.connectvới các đối sốself,host,port.Tất cả các lệnh sẽ đưa ra một auditing event
poplib.putlinevới các đối sốselfvàline, trong đólinelà các byte sắp được gửi đến máy chủ từ xa.Thay đổi trong phiên bản 3.2: Đã thêm tham số context.
Thay đổi trong phiên bản 3.4: Lớp hiện hỗ trợ kiểm tra tên máy chủ bằng
ssl.SSLContext.check_hostnamevà Server Name Indication (xemssl.HAS_SNI).Thay đổi trong phiên bản 3.9: Nếu tham số timeout được đặt thành 0, nó sẽ tăng
ValueErrorđể ngăn việc tạo ổ cắm không chặn.Thay đổi trong phiên bản 3.12: Các tham số keyfile và certfile không được dùng nữa đã bị xóa.
Một ngoại lệ được xác định là thuộc tính của mô-đun poplib:
- exception poplib.error_proto¶
Ngoại lệ được đưa ra đối với bất kỳ lỗi nào từ mô-đun này (không phát hiện được lỗi từ mô-đun
socket). Lý do ngoại lệ được chuyển tới hàm tạo dưới dạng một chuỗi.
Xem thêm
- Mô-đun
imaplib Mô-đun IMAP Python tiêu chuẩn.
- Frequently Asked Questions About Fetchmail
FAQ dành cho máy khách fetchmail POP/IMAP thu thập thông tin về các biến thể của máy chủ POP3 và sự không tuân thủ của RFC. Thông tin này có thể hữu ích nếu bạn cần viết một ứng dụng dựa trên giao thức POP.
Đối tượng POP3¶
Tất cả các lệnh POP3 được thể hiện bằng các phương thức cùng tên, bằng chữ thường; hầu hết đều trả về văn bản phản hồi do máy chủ gửi.
Một phiên bản POP3 có các phương thức sau:
- POP3.set_debuglevel(level)¶
Đặt mức độ gỡ lỗi của phiên bản. Điều này kiểm soát số lượng đầu ra gỡ lỗi được in. Mặc định,
0, không tạo ra kết quả gỡ lỗi. Giá trị1tạo ra lượng đầu ra gỡ lỗi vừa phải, thường là một dòng cho mỗi yêu cầu. Giá trị2hoặc cao hơn tạo ra lượng đầu ra gỡ lỗi tối đa, ghi lại từng dòng được gửi và nhận trên kết nối điều khiển.
- POP3.getwelcome()¶
Trả về chuỗi lời chào được gửi bởi máy chủ POP3.
- POP3.capa()¶
Truy vấn các khả năng của máy chủ như được chỉ định trong RFC 2449. Trả về một từ điển có dạng
{'name': ['param'...]}.Added in version 3.4.
- POP3.user(username)¶
Gửi lệnh của người dùng, phản hồi sẽ cho biết rằng mật khẩu là bắt buộc.
- POP3.pass_(password)¶
Gửi mật khẩu, phản hồi bao gồm số lượng tin nhắn và kích thước hộp thư. Lưu ý: hộp thư trên máy chủ bị khóa cho đến khi
quit()được gọi.
- POP3.apop(user, secret)¶
Sử dụng xác thực APOP an toàn hơn để đăng nhập vào máy chủ POP3.
- POP3.rpop(user)¶
Sử dụng xác thực RPOP (tương tự như lệnh r UNIX) để đăng nhập vào máy chủ POP3.
- POP3.stat()¶
Nhận trạng thái hộp thư. Kết quả là một bộ gồm 2 số nguyên:
(message count, mailbox size).
- POP3.list([which])¶
Danh sách tin nhắn yêu cầu, kết quả có dạng
(response, ['mesg_num octets', ...], octets). Nếu which được đặt, đó là thông báo cần liệt kê.
- POP3.retr(which)¶
Truy xuất toàn bộ số tin nhắn which và đặt cờ đã xem. Kết quả có dạng
(response, ['line', ...], octets).
- POP3.dele(which)¶
Gắn cờ số tin nhắn which để xóa. Trên hầu hết các máy chủ, việc xóa không thực sự được thực hiện cho đến khi QUIT (ngoại lệ chính là Eudora QPOP, cố tình vi phạm RFC bằng cách thực hiện các thao tác xóa đang chờ xử lý trên bất kỳ ngắt kết nối nào).
- POP3.rset()¶
Xóa mọi dấu xóa cho hộp thư.
- POP3.noop()¶
Không làm gì cả. Có thể được sử dụng như một vật lưu giữ.
- POP3.quit()¶
Đăng xuất: cam kết thay đổi, mở khóa hộp thư, ngắt kết nối.
- POP3.top(which, howmuch)¶
Truy xuất tiêu đề thư cộng với các dòng howmuch của thư sau tiêu đề của số thư which. Kết quả có dạng
(response, ['line', ...], octets).Lệnh POP3 TOP mà phương thức này sử dụng, không giống như lệnh RETR, không đặt cờ đã xem của thông báo; Thật không may, TOP được chỉ định kém trong RFC và thường xuyên bị hỏng trong các máy chủ không có thương hiệu. Hãy thử nghiệm phương pháp này bằng tay với các máy chủ POP3 mà bạn sẽ sử dụng trước khi tin tưởng vào nó.
- POP3.uidl(which=None)¶
Trả về danh sách thông báo tin nhắn (id duy nhất). Nếu which được chỉ định, kết quả sẽ chứa id duy nhất cho tin nhắn đó ở dạng
'response mesgnum uid, nếu không kết quả sẽ là danh sách(response, ['mesgnum uid', ...], octets).
- POP3.utf8()¶
Hãy thử chuyển sang chế độ UTF-8. Trả về phản hồi của máy chủ nếu thành công, tăng
error_protonếu không. Được chỉ định trong RFC 6856.Added in version 3.5.
- POP3.stls(context=None)¶
Bắt đầu phiên TLS trên kết nối đang hoạt động như được chỉ định trong RFC 2595. Điều này chỉ được phép trước khi xác thực người dùng
Tham số context là một đối tượng
ssl.SSLContextcho phép gộp các tùy chọn cấu hình, chứng chỉ và khóa riêng của SSL vào một cấu trúc duy nhất (có khả năng tồn tại lâu dài). Vui lòng đọc Cân nhắc về bảo mật để biết cách thực hành tốt nhất.Phương pháp này hỗ trợ kiểm tra tên máy chủ thông qua
ssl.SSLContext.check_hostnamevà Server Name Indication (xemssl.HAS_SNI).Added in version 3.4.
Các phiên bản của POP3_SSL không có phương thức bổ sung. Giao diện của lớp con này giống hệt với lớp cha của nó.
POP3 Ví dụ¶
Đây là một ví dụ tối thiểu (không kiểm tra lỗi) mở hộp thư, truy xuất và in tất cả thư:
nhập getpass, poplib
M = poplib.POP3('localhost')
M.user(getpass.getuser())
M.pass_(getpass.getpass())
numMessages = len(M.list()[1])
cho tôi trong phạm vi (numMessages):
cho j trong M.retr(i+1)[1]:
in(j)
Ở cuối mô-đun, có phần kiểm tra chứa ví dụ sử dụng rộng rãi hơn.