JavaMail API - Máy chủ IMAP
IMAP là từ viết tắt của Internet Message Access Protocol. Nó là một giao thức Internet Lớp Ứng dụng cho phép một máy khách e-mail truy cập e-mail trên một máy chủ thư từ xa. Máy chủ IMAP thường lắng nghe trên cổng nổi tiếng 143. IMAP qua SSL (IMAPS) được gán cho số cổng 993.
IMAP hỗ trợ cả chế độ hoạt động trực tuyến và ngoại tuyến. Các ứng dụng email khách sử dụng IMAP thường để lại thư trên máy chủ cho đến khi người dùng xóa chúng một cách rõ ràng.
Gói com.sun.mail.imaplà nhà cung cấp giao thức IMAP cho JavaMail API, cung cấp quyền truy cập vào kho tin nhắn IMAP. Bảng dưới đây liệt kê giao diện và các lớp của trình cung cấp này:
Lớp / Giao diện | Sự miêu tả |
---|---|
IMAPFolder.ProtocolCommand | Đây là một giao diện đơn giản cho các lệnh giao thức IMAP do người dùng xác định. |
ACL | Đây là một lớp học. Mục nhập danh sách kiểm soát truy cập cho một định danh xác thực cụ thể (người dùng hoặc nhóm). |
IMAPFolder | Lớp này thực hiện một thư mục IMAP. |
IMAPFolder.FetchProfileItem | Đây là một lớp để tìm nạp các tiêu đề. |
IMAPMessage | Lớp này thực hiện một đối tượng ReadableMime. |
IMAPMessage.FetchProfileCondition | Lớp này thực hiện kiểm tra sẽ được thực hiện trên mỗi thư trong thư mục. |
IMAPSSLStore | Lớp này cung cấp quyền truy cập vào kho tin nhắn IMAP qua SSL. |
IMAPStore | Lớp này cung cấp quyền truy cập vào kho tin nhắn IMAP. |
Quyền lợi | Lớp này đại diện cho tập hợp các quyền cho một định danh xác thực (ví dụ: người dùng hoặc một nhóm). |
Quyền lợi | Lớp bên trong này đại diện cho quyền cá nhân. |
SortTerm | Một tiêu chí sắp xếp cụ thể, như được xác định bởi RFC 5256. |
Một số điểm cần lưu ý ở trên nhà cung cấp này:
Nhà cung cấp này hỗ trợ cả giao thức IMAP4 và IMAP4rev1.
IMAPStore được kết nối duy trì một nhóm các đối tượng giao thức IMAP để sử dụng trong giao tiếp với máy chủ IMAP. Khi các thư mục được mở và các đối tượng giao thức IMAP mới là cần thiết, IMAPStore sẽ cung cấp chúng từ nhóm kết nối hoặc tạo chúng nếu không có sẵn. Khi một thư mục bị đóng, đối tượng giao thức IMAP của nó được trả về nhóm kết nối nếu nhóm đó.
Đối tượng IMAPStore được kết nối có thể hoặc không thể duy trì một đối tượng giao thức IMAP riêng biệt cung cấp cho cửa hàng một kết nối chuyên dụng đến máy chủ IMAP.
Nhà cung cấp giao thức IMAP hỗ trợ các thuộc tính sau, có thể được đặt trong đối tượng JavaMail Session. Các thuộc tính luôn được đặt dưới dạng chuỗi; cácType cột mô tả cách diễn giải chuỗi.
Tên | Kiểu | Sự miêu tả |
---|---|---|
mail.imap.user | Chuỗi | Tên người dùng mặc định cho IMAP. |
mail.imap.host | Chuỗi | Máy chủ IMAP để kết nối. |
mail.imap.port | int | Cổng máy chủ IMAP để kết nối, nếu phương thức connect () không chỉ định rõ ràng một cổng. Mặc định là 143. |
mail.imap.partialfetch | boolean | Kiểm soát xem có nên sử dụng khả năng tìm nạp một phần IMAP hay không. Giá trị mặc định là true. |
mail.imap.fetchsize | int | Kích thước tìm nạp một phần tính bằng byte. Mặc định là 16K. |
mail.imap.ignorebodystructuresize | boolean | Phản hồi IMAP CƠ THỂ bao gồm kích thước chính xác của từng bộ phận cơ thể. Thông thường, kích thước này được sử dụng để xác định lượng dữ liệu cần tìm nạp cho mỗi phần cơ thể. Giá trị mặc định là false. |
mail.imap.connectiontimeout | int | Giá trị thời gian chờ của kết nối socket tính bằng mili giây. Mặc định là thời gian chờ vô hạn. |
mail.imap.timeout | int | Giá trị thời gian chờ I / O của ổ cắm tính bằng mili giây. Mặc định là thời gian chờ vô hạn. |
mail.imap.statuscachetimeout | int | Giá trị thời gian chờ tính bằng mili giây cho bộ nhớ cache của phản hồi lệnh STATUS. Mặc định là 1000 (1 giây). Zero vô hiệu hóa bộ nhớ cache. |
mail.imap.appendbuffersize | int | Kích thước tối đa của thư để đệm trong bộ nhớ khi thêm vào thư mục IMAP. |
mail.imap.connectionpoolsize | int | Số lượng kết nối có sẵn tối đa trong nhóm kết nối. Mặc định là 1. |
mail.imap.connectionpooltimeout | int | Giá trị thời gian chờ tính bằng mili giây cho các kết nối nhóm kết nối. Mặc định là 45000 (45 giây). |
mail.imap.separatestoreconnection | boolean | Cờ để cho biết có sử dụng kết nối cửa hàng chuyên dụng cho các lệnh cửa hàng hay không. Mặc định là sai. |
mail.imap.auth.login.disable | boolean | Nếu đúng, hãy ngăn sử dụng lệnh AUTHENTICATE LOGIN không chuẩn, thay vào đó sử dụng lệnh LOGIN thuần túy. Mặc định là sai. |
mail.imap.auth.plain.disable | boolean | Nếu đúng, hãy ngăn việc sử dụng lệnh AUTHENTICATE PLAIN. Mặc định là sai. |
mail.imap.auth.ntlm.disable | boolean | Nếu đúng, ngăn sử dụng lệnh AUTHENTICATE NTLM. Mặc định là sai. |
mail.imap.proxyauth.user | Chuỗi | Nếu máy chủ hỗ trợ tiện ích mở rộng PROXYAUTH, thuộc tính này chỉ định tên của người dùng để hoạt động. Xác thực với máy chủ bằng thông tin đăng nhập của quản trị viên. Sau khi xác thực, nhà cung cấp IMAP sẽ đưa ra lệnh PROXYAUTH với tên người dùng được chỉ định trong thuộc tính này. |
mail.imap.localaddress | Chuỗi | Địa chỉ cục bộ (tên máy chủ) để liên kết khi tạo ổ cắm IMAP. Mặc định là địa chỉ được chọn bởi lớp Socket. |
mail.imap.localport | int | Số cổng cục bộ để liên kết khi tạo ổ cắm IMAP. Mặc định là số cổng được chọn bởi lớp Socket. |
mail.imap.sasl.enable | boolean | Nếu được đặt thành true, hãy cố gắng sử dụng gói javax.security.sasl để chọn cơ chế xác thực cho đăng nhập. Giá trị mặc định là false. |
mail.imap.sasl.mechanisms | Chuỗi | Danh sách tên cơ chế SASL được phân tách bằng dấu cách hoặc dấu phẩy để cố gắng sử dụng. |
mail.imap.sasl.authorizationid | Chuỗi | ID ủy quyền để sử dụng trong xác thực SASL. Nếu không được đặt, ID xác thực (tên người dùng) sẽ được sử dụng. |
mail.imap.sasl.realm | Chuỗi | Vùng sử dụng với cơ chế xác thực SASL yêu cầu vùng, chẳng hạn như DIGEST-MD5. |
mail.imap.auth.ntlm.domain | Chuỗi | Miền xác thực NTLM. |
mail.imap.auth.ntlm.flags | int | Cờ dành riêng cho giao thức NTLM. |
mail.imap.socketFactory | Nhà máy ổ cắm | Nếu được đặt thành một lớp triển khai giao diện javax.net.SocketFactory, lớp này sẽ được sử dụng để tạo các ổ cắm IMAP. |
mail.imap.socketFactory.class | Chuỗi | Nếu được đặt, hãy chỉ định tên của một lớp triển khai giao diện javax.net.SocketFactory. Lớp này sẽ được sử dụng để tạo các ổ cắm IMAP. |
mail.imap.socketFactory.fallback | boolean | Nếu được đặt thành true, việc không tạo được ổ cắm bằng cách sử dụng lớp nhà máy ổ cắm đã chỉ định sẽ khiến ổ cắm được tạo bằng lớp java.net.Socket. Giá trị mặc định là true. |
mail.imap.socketFactory.port | int | Chỉ định cổng để kết nối khi sử dụng nhà máy ổ cắm được chỉ định. Cổng mặc định được sử dụng khi không được đặt. |
mail.imap.ssl.enable | boolean | Nếu được đặt thành true, hãy sử dụng SSL để kết nối và sử dụng cổng SSL theo mặc định. Mặc định là false cho giao thức "imap" và true cho giao thức "imaps". |
mail.imap.ssl.checkserveridentity | boolean | Nếu được đặt thành true, hãy kiểm tra danh tính máy chủ như được chỉ định bởi RFC 2595. Giá trị mặc định là false. |
mail.imap.ssl.trust | Chuỗi | Nếu được đặt và chưa chỉ định nhà máy sản xuất ổ cắm, hãy cho phép sử dụng MailSSLSocketFactory. Nếu được đặt thành "*", tất cả các máy chủ đều được tin cậy. Nếu được đặt thành danh sách các máy chủ được phân tách bằng khoảng trắng, các máy chủ đó được tin cậy. Nếu không, sự tin cậy phụ thuộc vào chứng chỉ mà máy chủ xuất trình. |
mail.imap.ssl.socketFactory | Nhà máy ổ cắm SSL | Nếu được đặt thành một lớp mở rộng lớp javax.net.ssl.SSLSocketFactory, lớp này sẽ được sử dụng để tạo các ổ cắm IMAP SSL. |
mail.imap.ssl.socketFactory.class | Chuỗi | Nếu được đặt, hãy chỉ định tên của lớp mở rộng lớp javax.net.ssl.SSLSocketFactory. Lớp này sẽ được sử dụng để tạo các ổ cắm IMAP SSL. |
mail.imap.ssl.socketFactory.port | int | Chỉ định cổng để kết nối khi sử dụng nhà máy ổ cắm được chỉ định. Nếu không được đặt, cổng mặc định sẽ được sử dụng. |
mail.imap.ssl.protocols | chuỗi | Chỉ định các giao thức SSL sẽ được bật cho các kết nối SSL. Giá trị thuộc tính là danh sách mã thông báo được phân tách bằng khoảng trắng được chấp nhận cho phương thức javax.net.ssl.SSLSocket.setEnabledProtocols. |
mail.imap.starttls.enable | boolean | Nếu đúng, hãy cho phép sử dụng lệnh STARTTLS (nếu được máy chủ hỗ trợ) để chuyển kết nối sang kết nối được bảo vệ bằng TLS trước khi đưa ra bất kỳ lệnh đăng nhập nào. Mặc định là sai. |
mail.imap.starttls.required | boolean | Nếu đúng, yêu cầu sử dụng lệnh STARTTLS. Nếu máy chủ không hỗ trợ lệnh STARTTLS hoặc lệnh không thành công, phương pháp kết nối sẽ không thành công. Giá trị mặc định là false. |
mail.imap.socks.host | chuỗi | Chỉ định tên máy chủ của máy chủ proxy SOCKS5 sẽ được sử dụng cho các kết nối với máy chủ thư. |
mail.imap.socks.port | chuỗi | Chỉ định số cổng cho máy chủ proxy SOCKS5. Điều này chỉ cần được sử dụng nếu máy chủ proxy không sử dụng số cổng tiêu chuẩn là 1080. |
mail.imap.minidletime | int | Thuộc tính này đặt độ trễ tính bằng mili giây. Nếu không được đặt, giá trị mặc định là 10 mili giây. |
mail.imap.enableimapevents | boolean | Cho phép các sự kiện đặc biệt dành riêng cho IMAP được gửi tới Người đăng ký kết nối của Cửa hàng. Nếu đúng, các phản hồi không mong muốn nhận được trong phương thức không hoạt động của Store sẽ được gửi dưới dạng ConnectionEvents với một loại IMAPStore.RESPONSE. Thông báo của sự kiện sẽ là chuỗi phản hồi IMAP thô. Theo mặc định, những sự kiện này không được gửi. |
mail.imap.folder.class | Chuỗi | Tên lớp của một lớp con của com.sun.mail.imap.IMAPFolder. Lớp con có thể được sử dụng để cung cấp hỗ trợ cho các lệnh IMAP bổ sung. Lớp con phải có các hàm tạo công khai có dạng MyIMAPFolder công khai (Chuỗi fullName, dấu phân tách, cửa hàng IMAPStore, Boolean isNamespace) và MyIMAPFolder công cộng (ListInfo li, cửa hàng IMAPStore) |
Nói chung, các ứng dụng không cần phải sử dụng trực tiếp các lớp trong gói này. Thay vào đó, họ nên sử dụng các API được xác định bởi gói javax.mail (và các gói con). Các ứng dụng không bao giờ được tạo trực tiếp các phiên bản của IMAPStore hoặc IMAPFolder. Thay vào đó, họ nên sử dụng phương thức Session getStore để có được một đối tượng Store thích hợp và từ đó có được các đối tượng Thư mục.
Ví dụ để sử dụng máy chủ IMAP được trình bày trong chương Quản lý hạn ngạch .