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 đó. 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 ứng dụng IMAP cung cấp trải nghiệm giống Gmail hơn thông qua IMAP. Thay vào đó, 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 ứng dụng di động có thể muốn sử dụng API Gmail RESTful.
Bạn có thể sử dụng các tiện ích này khi truy cập vào Gmail thông qua giao thức IMAP chuẩn hoặc khi kết nối qua OAuth.
Kiểm tra xem có tiện ích nào không
Gmail quảng cáo tính năng hỗ trợ tiện ích trong phản hồi của lệnh CAPABILITY
. Việc hỗ trợ tiện ích trong tài liệu này được biểu thị bằng sự hiện diện của X-GM-EXT-1
trong danh sách các chức năng được hỗ trợ.
Bạn nên tự thông báo cho ứng dụng bằng lệnh mã nhận dạng IMAP (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ề 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
Phần mở rộng sử dụng đặc biệt của lệnh LIST
Gmail hỗ trợ Tiện ích IMAP LIST cho Hộp thư sử dụng đặc biệt. Tiện ích này cung cấp các thuộc tính mới cho các thư mục đặc biệt. Các thuộc tính này cho phép ứng dụng khách biết những thư mục nào là đặc biệt (ví dụ: \All
). Danh sách hiện tại của các thư mục đặc biệt bao gồm: Đã gắn dấu sao, 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 nội dung mà ứng dụng cần ENABLEd
.
Sau đây là bản chép lời mẫu của 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 Sử dụng đặc biệt, trong đó thêm thuộc tính \Important
cho Hộp thư ưu tiên của Gmail (tức là "[Gmail]/Important"
).
XLIST không còn được dùng nữa
Lệnh XLIST
dành riêng cho Gmail đã ngừng hoạt động từ năm 2013 và thay vào đó là Tiêu chuẩn danh sách sử dụng đặc biệt của IMAP. Bạn nên chuyển từ XLIST
sang tiêu chuẩn ngành về Mục đích 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 sử dụng đặ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 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à bản chép lời mẫu của lệnh 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ã thư duy nhất cho mỗi email để có thể xác định một thư duy nhất trên nhiều thư mục. Hoạt động truy xuất mã nhận dạng thư này được hỗ trợ thông qua thuộc tính X-GM-MSGID
trên lệnh FETCH
. Mã thư là một số nguyên 64 bit chưa ký và là số thập phân tương đương với chuỗi mã nhận dạng dạng thập lục phân được dùng trong giao diện web và API Gmail.
Sau đây là bản chép lời mẫu của 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)
Bạn cũng có thể sử dụng thuộc tính X-GM-MSGID
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à bản chép lời mẫu 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ư trên Gmail: X-GM-THRID
Gmail cung cấp mã chuỗi thư để liên kết các nhóm thư theo cách tương tự như trong giao diện web của Gmail. Hoạt động truy xuất mã nhận dạng luồng này được hỗ trợ thông qua thuộc tính X-GM-THRID
trên lệnh FETCH
. Mã chuỗi là một số nguyên 64 bit chưa ký và là số thập phân tương đương với chuỗi mã thập lục phân được dùng trong giao diện web và API Gmail.
Sau đây là bản chép lời mẫu của lệnh gọi để truy xuất X-GM-THRID
của một số thông báo (trong hai 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)
Bạn cũng có thể sử dụng thuộc tính X-GM-THRID
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à bản chép lời mẫu của 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 của IMAP. Do đó, bạn có thể sửa đổi nhãn bằng các lệnh IMAP chuẩn, CREATE
, RENAME
và DELETE
, các lệnh này hoạt động trên thư mục. Nhãn hệ thống (nhãn do Gmail tạo) được đặt trước là "[Gmail]" hoặc "[GoogleMail]" trong danh sách nhãn. Sử dụng lệnh XLIST
để lấy 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 tin nhắn 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 nguyên tử hoặc một chuỗi theo định nghĩa của RFC.
Sau đây là bản chép lời mẫu của 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ư bằng cách sử dụng lệnh STORE
kết hợp với thuộc tính X-GM-LABELS
. Sau đây là bản chép lời mẫu minh hoạ cách 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ể sử 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. Dưới đây là bản chép lời mẫu của một lệnh 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
- IMAP: RFC 3501: INTERNET MESSAGE ACCESS PROTOCOL – VERSION 4rev1
- Mã nhận dạng IMAP: RFC 2971: PHẦN MỞ RỘNG MÃ NHẬN DẠNG IMAP4
- IMAP sử dụng đặc biệt: RFC 6154: Tiện ích IMAP LIST cho Hộp thư sử dụng đặc biệt