Tiện ích IMAP

Tài liệu này mô tả các tiện ích IMAP do Gmail cung cấp và cách nhà phát triển có thể sử dụng các tiện ích này. Tài liệu này giả định rằng bạn đã nắm rõ giao thức IMAP.

Tổng quan

Gmail cung cấp một bộ tiện ích IMAP để cho phép tác giả của các ứng dụng IMAP mang đến trải nghiệm giống như Gmail hơn thông qua IMAP. Thay vào đó, những nhà phát triển tích hợp các tính năng của Gmail vào ứng dụng web hoặc di động của họ có thể muốn sử dụng Gmail API dựa trên REST.

Bạn có thể sử dụng các tiện ích này khi truy cập Gmail thông qua giao thức IMAP tiêu chuẩn hoặc khi kết nối qua OAuth.

Kiểm tra xem có tiện ích hay không

Gmail quảng cáo khả năng hỗ trợ tiện ích trong phản hồi của mình đối với lệnh CAPABILITY. Sự hỗ trợ của các tiện ích trong tài liệu này được biểu thị bằng sự xuất hiện của X-GM-EXT-1 trong danh sách các chức năng được hỗ trợ.

Khách hàng nên tự giới thiệu bằng lệnh IMAP ID (RFC 2971) và thêm địa chỉ liên hệ làm phương án dự phòng trong trường hợp cần thay đổi các tiện ích này.

Sau đây là ví dụ về quá trình bắt tay và sử dụng lệnh CAPABILITY trên điểm cuối IMAP của Gmail:

* OK Gimap ready for requests from 127.0.0.1 k2if6111336rvb.0
a001 LOGIN username@gmail.com password
a001 OK username@gmail.com authenticated (Success)
a001 OK Login successful
a002 CAPABILITY
* CAPABILITY IMAP4rev1 UNSELECT LITERAL+ IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1
a002 OK Success
a003 ID ("name" "clientname" "version" "1.2.3" "vendor" "companyname" "contact" "foo@example.com")
* ID ("name" "GImap" "vendor" "Google, Inc." "support-url" "http://mail.google.com/support" "remote-host" "127.0.0.1")
a003 OK Success

Tiện ích sử dụng đặc biệt của lệnh LIST

Gmail hỗ trợ Tiện ích LIST của IMAP cho hộp thư có mục đích đặc biệt. Tiện ích này cung cấp các thuộc tính mới cho thư mục đặc biệt. Các thuộc tính này cho phép ứng dụng biết những thư mục nào là thư mục đặc biệt (ví dụ: \All). Danh sách các thư mục đặc biệt hiện tại bao gồm: Thư gắn dấu sao, Thư quan trọng, Thư đã gửi, Thư nháp, Thư rác, Tất cả thư và Thùng rác. Tất cả các phản hồi LIST đều chứa các thuộc tính Sử dụng đặc biệt này; đây không phải là CAPABILITY mới hoặc thứ mà khách hàng cần ENABLEd.

Sau đây là ví dụ về bản chép lời của một lệnh gọi đến LIST:

a004 LIST "" "*"
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\Noselect \HasChildren) "/" "[Gmail]"
* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail"
* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts"
* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important"
* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail"
* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
* LIST (\HasNoChildren \Flagged) "/" "[Gmail]/Starred"
* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash"
a004 OK Success

Phản hồi tuân theo tiêu chuẩn Special-Use (Sử dụng đặc biệt) với thuộc tính \Important bổ sung được thêm vào cho Hộp thư ưu tiên của Gmail (tức là "[Gmail]/Important").

XLIST không được dùng nữa

Lệnh XLIST dành riêng cho Gmail đã ngừng hoạt động vào năm 2013 để chuyển sang Tiêu chuẩn danh sách sử dụng đặc biệt của IMAP. Ứng dụng nên chuyển từ XLIST sang tiêu chuẩn ngành Sử dụng đặc biệt càng sớm càng tốt. Xin lưu ý rằng tên thuộc tính chuẩn cho Mục đích đặc biệt tương tự nhưng không giống với tên thuộc tính XLIST cũ.

Phần mở rộng của lệnh SEARCH: X-GM-RAW

Để cung cấp quyền truy cập vào cú pháp tìm kiếm đầy đủ của Gmail, Gmail cung cấp thuộc tính tìm kiếm X-GM-RAW. Các đối số được truyền cùng với thuộc tính X-GM-RAW khi thực thi các lệnh SEARCH hoặc UID SEARCH sẽ được diễn giải theo cách tương tự như trong giao diện web của Gmail.

Sau đây là ví dụ về bản chép lời của một cuộc gọi đến SEARCH bằng thuộc tính X-GM-RAW:

a005 SEARCH X-GM-RAW "has:attachment in:unread"
* SEARCH 123 12344 5992
a005 OK SEARCH (Success)

Quyền truy cập vào mã thư duy nhất của Gmail: X-GM-MSGID

Gmail cung cấp một mã nhận dạng riêng biệt cho mỗi email để bạn có thể xác định một thư riêng biệt trên nhiều thư mục. Bạn có thể truy xuất mã nhận dạng thư này thông qua thuộc tính X-GM-MSGID trên lệnh FETCH. Mã nhận dạng thư là một số nguyên không dấu 64 bit và là số thập phân tương đương với chuỗi thập lục phân mã nhận dạng được dùng trong giao diện web và API Gmail.

Sau đây là ví dụ về bản chép lời của một lệnh gọi để truy xuất X-GM-MSGID của một thông báo bằng lệnh FETCH:

a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)

Thuộc tính X-GM-MSGID cũng có thể được dùng trong các lệnh SEARCH hoặc UID SEARCH để tìm số thứ tự hoặc UID của một thư dựa trên mã thư của Gmail. Sau đây là ví dụ về bản chép lời của một lệnh gọi để truy xuất UID của một thông báo bằng lệnh UID SEARCH:

a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)

Quyền truy cập vào mã nhận dạng chuỗi thư trong Gmail: X-GM-THRID

Gmail cung cấp một mã nhận dạng chuỗi để liên kết các nhóm thư theo cách tương tự như trong giao diện web của Gmail. Bạn có thể truy xuất mã nhận dạng luồng này thông qua thuộc tính X-GM-THRID trên lệnh FETCH. Mã nhận dạng chuỗi là một số nguyên không dấu 64 bit và là giá trị tương đương theo hệ thập phân cho chuỗi thập lục phân mã nhận dạng được dùng trong giao diện web và API Gmail.

Sau đây là ví dụ về bản chép lời của một lệnh gọi để truy xuất X-GM-THRID của một số thông báo (trong 2 luồng) bằng lệnh FETCH:

a008 FETCH 1:4 (X-GM-THRID)
* 1 FETCH (X-GM-THRID 1278455344230334865)
* 2 FETCH (X-GM-THRID 1266894439832287888)
* 3 FETCH (X-GM-THRID 1266894439832287888)
* 4 FETCH (X-GM-THRID 1266894439832287888)
a008 OK FETCH (Success)

Thuộc tính X-GM-THRID cũng có thể được dùng trong các lệnh SEARCH hoặc UID SEARCH để tìm số thứ tự hoặc UID của các thông báo trong một luồng nhất định. Sau đây là ví dụ về bản chép lời của một lệnh gọi để truy xuất UID của một số thông báo bằng lệnh UID SEARCH:

a009 UID SEARCH X-GM-THRID 1266894439832287888
* SEARCH 2 3 4
a009 OK Search (Success)

Quyền truy cập vào nhãn Gmail: X-GM-LABELS

Gmail coi nhãn là thư mục cho mục đích sử dụng IMAP. Do đó, bạn có thể sửa đổi nhãn bằng các lệnh IMAP tiêu chuẩn CREATE, RENAMEDELETE hoạt động trên các thư mục. Nhãn hệ thống (do Gmail tạo) được dành riêng và có tiền tố "[Gmail]" hoặc "[GoogleMail]" trong danh sách nhãn. Dùng lệnh XLIST để xem toàn bộ danh sách nhãn cho một hộp thư.

Bạn có thể truy xuất nhãn cho một thông báo nhất định bằng cách sử dụng thuộc tính X-GM-LABELS với lệnh FETCH. Thuộc tính này được trả về dưới dạng danh sách ASTRING, được mã hoá bằng UTF-7 nếu thích hợp. ASTRING là một atom hoặc một string như được xác định theo RFC.

Sau đây là ví dụ về bản chép lời của một lệnh gọi để truy xuất X-GM-LABELS của một số thông báo bằng lệnh FETCH:

a010 FETCH 1:4 (X-GM-LABELS)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante"))
* 2 FETCH (X-GM-LABELS (foo))
* 3 FETCH (X-GM-LABELS ())
* 4 FETCH (X-GM-LABELS (\Drafts))
a010 OK FETCH (Success)

Bạn có thể thêm nhãn vào một thông báo bằng cách sử dụng lệnh STORE cùng với thuộc tính X-GM-LABELS. Sau đây là một ví dụ về bản chép lời minh hoạ việc thêm nhãn vào một thông báo:

a011 STORE 1 +X-GM-LABELS (foo)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo))
a011 OK STORE (Success)

Bạn cũng có thể dùng thuộc tính X-GM-LABELS trong các lệnh SEARCH hoặc UID SEARCH để tìm số thứ tự hoặc UID của tất cả thư trong thư mục có nhãn nhất định. Sau đây là ví dụ về bản chép lời của một cuộc gọi để truy xuất số thứ tự của một số thông báo bằng lệnh SEARCH:

a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)

Tài liệu tham khảo