我通过IMAP使用javamail访问Lotus和Groupwise,递归访问所有文件夹并处理我找到的电子邮件。但是在像Tasklist和Calendar这样的文件夹中(那些来自Groupwise,但我想我记得Lotus有类似的东西),我把那里的项目当作IMAPMessage的实例,因此它们就像邮件一样被处理。
我理解这些项目通过IMAP协议(通过设计或错误)作为邮件公开,但我只想处理正确的邮件。有没有办法做到这一点?到目前为止,我已经驳回了以下方法:
我正在寻找的是到目前为止我已经错过的一些IMAP api电话或者那些行中的东西......
答案 0 :(得分:2)
我不熟悉javamail,但我熟悉IMAP协议(RFC 3501),我会尝试以下方法:
示例IMAP命令:
TAG0001 FETCH 1 BODY.PEEK[HEADER.FIELDS (CONTENT-TYPE)]
示例IMAP服务器响应:
* 1 FETCH (BODY[HEADER.FIELDS (CONTENT-TYPE)] {69}...data..})
TAG0001 OK Success
“...... data ...”的内容是Content-type标题:
Content-Type: text/calendar;
name="meeting.ics";
method=REQUEST
示例IMAP命令:
TAG0002 FETCH 2 (BODY)
示例IMAP服务器响应:
* 1 FETCH (
BODY
(
(
("text" "plain" ("charset" "iso-8859-2") NIL NIL "quoted-printable" 194 1)
("text" "html" ("charset" "iso-8859-2") NIL NIL "quoted-printable" 1173 1)
("text" "calendar"
("name" "meeting.ics" "charset" "windows-1252" "method" "REQUEST") NIL NIL "8bit" 1531 1)
"alternative"
)
"mixed"
)
)
TAG0002 OK FETCH completed.
(为了更好的可读性,添加了许多空格)
有关FETCH命令及其响应格式的更多信息,请查看RFC 3501的6.4.5和7.4.2部分。不幸的是,我不知道如何使用javamail实现这一点。