2011-01-20 7 views

Trả lời

23

Tất cả thông tin thư được truy xuất bằng cách sử dụng FETCH command. Tuy nhiên, bạn có hai tùy chọn về cách sử dụng nó.

Trước tiên, bạn có thể truy xuất toàn bộ thư email, nguyên văn. Trong trường hợp đó, bạn sẽ cần phải bao gồm một trình phân tích cú pháp MIME trong máy khách của bạn để tìm ra cấu trúc của thông báo. (Mỗi nền tảng có ít nhất một hoặc hai trình phân tích cú pháp MIME phổ biến; vì bạn chưa cho chúng tôi biết bạn đang viết mã gì, tôi không thể đề xuất một cho bạn.) Khi bạn nhận được cấu trúc thư từ trình phân tích cú pháp MIME, bạn ' sẽ cần một số logic của khách hàng để xác định phần nào là phần đính kèm. Bạn nên xem số RFC 2183 để bắt đầu. Nói chung, các bộ phận có một số Content-Disposition bắt đầu bằng "attachment" sẽ là tệp đính kèm, nhưng tất cả tác giả ứng dụng thư đều trải qua giai đoạn dùng thử và sai sót. Để tải về toàn bộ email, bạn muốn thực hiện lệnh IMAP

$ UID FETCH <uid> BODY.PEEK[] 

Thứ hai, bạn có thể có máy chủ IMAP phân tích cấu trúc thông điệp cho bạn bằng cách phát hành một FETCH BODYSTRUCTURE (lưu ý: không có dấu ngoặc vuông). Bạn sẽ phải phân tích cú pháp dữ liệu BODYSTRUCTURE đã trả về; IMAP RFC explains the format và đưa ra một vài ví dụ.

# message, no attachments: 
("TEXT" "PLAIN" ("CHARSET" "ISO-8859-1" "FORMAT" "flowed") NIL NIL "7BIT" 1469 50 NIL NIL NIL NIL) 

# message, one attachment 
(("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "QUOTED-PRINTABLE" 56 1 NIL NIL NIL NIL)("AUDIO" "X-WAV" ("NAME" "voicemail.wav") NIL NIL "BASE64" 152364 NIL ("attachment" ("FILENAME" "voicemail.wav")) NIL NIL) "MIXED" ("BOUNDARY" "----_=_NextPart_001_01C4ACB3.5AA7B8E2") NIL NIL NIL) 

Khi bạn đã xác định phần nào mình quan tâm, bạn có thể phát hành FETCH cho nội dung thư có thể hiển thị. Sau đó, khách hàng của bạn có thể liệt kê các tệp đính kèm thư (được phân tích cú pháp từ phản hồi BODY) và sau đó có thể quay lại và FETCH chúng nếu người dùng nhấp vào chúng. Vì vậy, các lệnh IMAP bạn sẽ được phát hành sẽ nằm dọc theo các dòng:

$ UID FETCH <uid> (BODY ENVELOPE) # get structure and header info 
$ UID FETCH <uid> (BODY[1])   # retrieving displayable body 
$ UID FETCH <uid> (BODY[2])   # retrieving attachment on demand 
1

Tôi tin rằng những gì bạn đang tìm kiếm là IMAP v4 FETCH command.

+0

ok, nhưng mọi thứ là tôi một lần tất cả các thư đã được tải sau đó sau những gì email bao giờ là tôi đang chọn, thư này, tôi muốn tải tập tin đính kèm. bây giờ khi thư của tôi đã được tải xuống và sau đó tôi cố tải xuống tệp đính kèm; nó sẽ nói $ OK UID FETCH hoàn thành vì vậy tôi có thể làm gì.? –