2011-02-11 65 views
0

我正在研究IMAP,因此只需读取正文(body [header.fields(DATE FROM SUBJECT)])我正在传递此命令。通过IMAP字符串读取问题

但问题是有一段时间我的字符串返回额外的东西excetp从我原来的字符串。 有时我得到的字符串的有限部分意味着身体的一半。因此,无论何时我通过第二个命令,它都将接受作为第一个命令并返回结果作为第一个待命结果的命令。

所以我担心的是,我无法检索正文部分的正确数据。

根据我的知识我认为这是由于互联网datapacket tresfersize,但除了这种看outlook或任何其他邮件管理器将正常工作,这是什么这是 这个数据retristing的机制。

或其他任何东西做FO我的编码.....

谢谢..

+0

您可以使用现有的IMAP库吗?这比编写你自己的要容易得多。如果没有,您是否可以发布包含“额外内容”的IMAP服务器的示例响应?你连接到哪个IMAP服务器进行测试? – dkarp 2011-02-11 15:19:52

回答

1

发布从包含“额外的东西” IMAP服务器的响应示例会有所帮助。

您最可能面临的问题是未标记的服务器响应。

继承人什么RFC3501说:

状态响应可以被标记或未标记。标记的状态响应指示完成结果的客户端命令(OK,NO,或者BAD状态),并有一个标签相匹配的命令:

C: a002 NOOP 
S: a002 OK NOOP completed 

一些状态响应,所有服务器数据,均未标记。一个 未标记的响应由标记“*”而不是标记指示。

C: a047 NOOP 
S: * 22 EXPUNGE 
S: * 23 EXISTS 
S: * 3 RECENT 
S: * 14 FETCH (FLAGS (\Seen \Deleted)) 
S: a047 OK NOOP completed 

所以你需要区分这两种响应类型。

请记住,检查是否每一个接收到线,从“*”字符开始是不够的,因为你的电子邮件也可能来自恒星字符开始行:

C: a004 fetch 12 body[header] 
S: * 12 FETCH (RFC822 {342} 
S: Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT) 
S: From: Terry Gray <[email protected]> 
S: Subject: IMAP4rev1 WG mtg summary and minutes 
S: MIME-Version: 1.0 
S:  
S: * This is email body containing start char 
S: ) 
S: a004 OK FETCH completed 

{342}是的确切数目你应该阅读的字节。

底线是不要重新发明车轮使用现有的库。

你可以看看我的IMAP component(不是免费的)。

+0

感谢pawel我选择了文件夹命令后使用了NOOP,但仍然没有解决问题。如果你提供了一些例子,那么我会感谢你.. – 2011-02-14 10:37:49