이 문서에서는 Gmail에서 제공하는 IMAP 확장 프로그램과 개발자가 이러한 확장 프로그램을 사용하는 방법을 설명합니다. 이 문서에서는 IMAP 프로토콜에 익숙하다고 가정합니다.
개요
Gmail은 IMAP 클라이언트 작성자가 IMAP을 통해 Gmail과 유사한 환경을 제공할 수 있도록 IMAP 확장 프로그램을 제공합니다. 웹 또는 모바일 앱에 Gmail 기능을 통합하는 개발자는 대신 RESTful Gmail API를 사용하는 것이 좋습니다.
확장 프로그램은 표준 IMAP 프로토콜을 통해 Gmail에 액세스하거나 OAuth를 통해 연결할 때 사용할 수 있습니다.
확장 프로그램이 있는지 확인
Gmail은 CAPABILITY
명령어에 대한 응답에서 확장 프로그램 지원을 광고합니다. 이 문서의 확장 프로그램 지원 여부는 지원되는 기능 목록에 X-GM-EXT-1
가 있는 것으로 표시됩니다.
클라이언트는 IMAP ID 명령어 (RFC 2971)를 사용하여 자신을 알리고 이러한 확장 프로그램을 변경해야 하는 경우를 대비해 연락처 주소를 대체로 포함하는 것이 좋습니다.
다음은 핸드셰이크 및 Gmail IMAP 엔드포인트에서 CAPABILITY
명령어를 사용하는 예입니다.
* 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
LIST 명령어의 특수 용도 확장 프로그램
Gmail은 특수 폴더에 새로운 속성을 제공하는 특수용 편지함의 IMAP LIST 확장 프로그램을 지원합니다. 이러한 속성을 사용하면 어떤 폴더가 특별한지 클라이언트가 알 수 있습니다 (예: \All
). 현재 특수 폴더 목록은 별표표시된 항목, 중요함, 보낸편지함, 임시보관함, 스팸, 전체보관함, 휴지통으로 구성됩니다. 모든 LIST
응답에는 이러한 특수 용도 속성이 포함됩니다. 이는 새로운 CAPABILITY
이 아니며 클라이언트에서 ENABLEd
해야 하는 항목도 아닙니다.
다음은 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
응답은 특수 용도 표준을 따르며 Gmail의 자동분류함 ("[Gmail]/Important"
)에 \Important
속성이 추가됩니다.
XLIST가 지원 중단됨
Gmail용 XLIST
명령어는 2013년에 지원 중단되었으며 IMAP 특수 용도 목록 표준이 대체되었습니다. 클라이언트는 가능한 한 빨리 XLIST
에서 특수 용도 업계 표준으로 이전하는 것이 좋습니다. 특수 용도 표준 속성 이름은 기존 XLIST
속성 이름과 비슷하지만 동일하지는 않습니다.
SEARCH 명령어 확장: X-GM-RAW
Gmail은 전체 Gmail 검색 문법에 액세스할 수 있도록 X-GM-RAW
검색 속성을 제공합니다. SEARCH
또는 UID SEARCH
명령어를 실행할 때 X-GM-RAW
속성과 함께 전달되는 인수는 Gmail 웹 인터페이스에서와 같은 방식으로 해석됩니다.
다음은 X-GM-RAW
속성을 사용하여 SEARCH
를 호출하는 스크립트의 예입니다.
a005 SEARCH X-GM-RAW "has:attachment in:unread"
* SEARCH 123 12344 5992
a005 OK SEARCH (Success)
Gmail 고유 메시지 ID(X-GM-MSGID)에 대한 액세스
Gmail은 여러 폴더에서 고유한 메시지를 식별할 수 있도록 각 이메일에 고유한 메시지 ID를 제공합니다. 이 메시지 ID의 검색은 FETCH
명령어의 X-GM-MSGID
속성을 통해 지원됩니다. 메일 ID는 64비트 부호 없는 정수이며 웹 인터페이스 및 Gmail API에 사용되는 ID 16진수 문자열의 십진수 값에 해당합니다.
다음은 FETCH
명령어를 사용하여 메시지의 X-GM-MSGID
를 검색하는 호출의 스크립트 예입니다.
a006 FETCH 1 (X-GM-MSGID)
* 1 FETCH (X-GM-MSGID 1278455344230334865)
a006 OK FETCH (Success)
X-GM-MSGID
속성은 SEARCH
또는 UID SEARCH
명령어에서 Gmail의 메일 ID를 사용하여 메일의 시퀀스 번호 또는 UID
를 찾는 데도 사용할 수 있습니다. 다음은 UID SEARCH
명령어를 사용하여 메시지의 UID
를 검색하는 호출의 스크립트 예입니다.
a007 UID SEARCH X-GM-MSGID 1278455344230334865
* SEARCH 1
a007 OK SEARCH (Success)
Gmail 대화목록 ID(X-GM-THRID)에 대한 액세스 권한
Gmail은 Gmail 웹 인터페이스와 동일한 방식으로 메일 그룹을 연결하는 대화목록 ID를 제공합니다. 이 스레드 ID는 FETCH
명령어의 X-GM-THRID
속성을 통해 검색할 수 있습니다. 스레드 ID는 64비트 부호 없는 정수이며 웹 인터페이스 및 Gmail API에 사용되는 ID 16진수 문자열의 십진수 값에 해당합니다.
다음은 FETCH
명령어를 사용하여 여러 메시지 (두 스레드에 있음)의 X-GM-THRID
를 검색하는 호출의 스크립트 예입니다.
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)
X-GM-THRID
속성은 SEARCH
또는 UID SEARCH
명령어에서 특정 대화목록의 메시지 시퀀스 번호 또는 UID
를 찾는 데도 사용할 수 있습니다. 다음은 UID SEARCH
명령어를 사용하여 여러 메시지의 UID
를 검색하는 호출의 스크립트 예입니다.
a009 UID SEARCH X-GM-THRID 1266894439832287888
* SEARCH 2 3 4
a009 OK Search (Success)
Gmail 라벨에 액세스: X-GM-LABELS
Gmail은 IMAP의 목적으로 라벨을 폴더로 취급합니다. 따라서 폴더에 작용하는 표준 IMAP 명령어인 CREATE
, RENAME
, DELETE
를 사용하여 라벨을 수정할 수 있습니다. Gmail에서 만든 라벨인 시스템 라벨은 예약되어 있으며 라벨 목록에서 '[Gmail]' 또는 '[GoogleMail]'이라는 접두사가 붙습니다. XLIST
명령어를 사용하여 우편함의 전체 라벨 목록을 가져옵니다.
FETCH
명령어와 함께 X-GM-LABELS
속성을 사용하여 특정 메시지의 라벨을 가져올 수 있습니다. 이 속성은 ASTRING
목록으로 반환되며 필요에 따라 UTF-7로 인코딩됩니다. ASTRING
는 RFC에서 정의된 Atom 또는 문자열입니다.
다음은 FETCH
명령어를 사용하여 여러 메시지의 X-GM-LABELS
를 검색하는 호출의 스크립트 예입니다.
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)
STORE
명령어와 X-GM-LABELS
속성을 함께 사용하여 메시지에 라벨을 추가할 수 있습니다. 다음은 메시지에 라벨을 추가하는 것을 보여주는 스크립트의 예입니다.
a011 STORE 1 +X-GM-LABELS (foo)
* 1 FETCH (X-GM-LABELS (\Inbox \Sent Important "Muy Importante" foo))
a011 OK STORE (Success)
X-GM-LABELS
속성은 SEARCH
또는 UID SEARCH
명령어에서 지정된 라벨이 있는 폴더의 모든 메시지의 시퀀스 번호 또는 UID
를 찾는 데도 사용할 수 있습니다. 다음은 SEARCH
명령어를 사용하여 여러 메시지의 시퀀스 번호를 검색하는 호출의 스크립트 예시입니다.
a012 SEARCH X-GM-LABELS foo
* SEARCH 1 2
a012 OK SEARCH (Success)
참조
- IMAP: RFC 3501: 인터넷 메시지 액세스 프로토콜 - 버전 4rev1
- IMAP ID: RFC 2971: IMAP4 ID 확장
- IMAP 특수 사용: RFC 6154: 특수 용도 편지함을 위한 IMAP 목록 확장 프로그램