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 đó. 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 cung cấp trải nghiệm giống Gmail hơn thông qua IMAP. Thay vào đó, các nhà phát triển tích hợp các tính năng của Gmail vào ứng dụng dành cho thiết bị di động hoặc web có thể muốn sử dụng API Gmail RESTful.

Tiện ích có thể được sử dụng 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 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ợ.

Ứng dụng nên tự thông báo bằng lệnh mã nhận dạng IMAP (RFC 2971) và đưa một địa chỉ liên hệ vào làm phương án dự phòng trong trường hợp bắt buộc phải 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 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

Câu trả lời tuân theo tiêu chuẩn Sử dụng đặc biệt có thêm thuộc tính \Important cho Hộp thư ưu tiên của Gmail (ví dụ: "[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. Khách hà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 tiêu chuẩn 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

Để cho phép người dùng sử dụng 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ột mã nhận dạng thư duy nhất cho mỗi email để có thể xác định một thư riêng biệt trên nhiều thư mục. Hoạt động truy xuất mã thư này được hỗ trợ 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 64 bit chưa ký và là số thập phân tương đương với chuỗi mã nhận dạng hex 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ể 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ư cho mã nhận dạng thư của Gmail cụ thể. 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ã luồng 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 hex 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)

Truy cập vào các nhãn của Gmail: X-GM-Label

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, RENAMEDELETE, 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 của một thông báo nhất định bằng cách sử dụng thuộc tính X-GM-LABELS bằng 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.

Dưới đây là bản chép lời mẫu của một lệnh gọi để truy xuất X-GM-LABELS của một số tin nhắn 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 tin nhắn 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ể 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 cụ thể. 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