从gmail线程提取单个消息(Objective-c)

从gmail线程提取单个消息(Objective-c),objective-c,parsing,gmail,imap,Objective C,Parsing,Gmail,Imap,我正在尝试用IMAP(objective-c)获取gmail电子邮件,我想为每个线程分离对话中发送的每一条消息。为了让自己更清楚,想象一下这样的对话: 约翰说:嗨,迈克,这是第一封电子邮件 迈克回答:嘿,约翰,你好吗? 约翰回答:太好了,迈克,谢谢 如果我通过IMAP收到John的电子邮件,我将只收到一封电子邮件,即: 嘿,约翰,你好吗? 5月21日星期三, 嗨,迈克,这是第一封电子邮件 我想从我收到的这封邮件中得到两条不同的信息。 第一条信息是“嗨,迈克,这是第一封电子邮件” 第二条信息是“嗨

我正在尝试用IMAP(objective-c)获取gmail电子邮件,我想为每个线程分离对话中发送的每一条消息。为了让自己更清楚,想象一下这样的对话:

约翰说:嗨,迈克,这是第一封电子邮件 迈克回答:嘿,约翰,你好吗? 约翰回答:太好了,迈克,谢谢

如果我通过IMAP收到John的电子邮件,我将只收到一封电子邮件,即: 嘿,约翰,你好吗? 5月21日星期三, 嗨,迈克,这是第一封电子邮件

我想从我收到的这封邮件中得到两条不同的信息。 第一条信息是“嗨,迈克,这是第一封电子邮件” 第二条信息是“嗨,约翰,你好吗?”

我查看了标题中的message id字段,但我不知道如何将其链接回实际的消息

有什么想法吗? 谢谢


[编辑]:到目前为止,我可以解析John收件箱中的电子邮件并提取包含该邮件的关联字符串。但是我想要的是实际的消息(带有标题和全部),而不仅仅是包含消息的字符串。

Gmail有一个非常好的IMAP扩展来实现这一点。不过,我从未尝试过使用objective-c库

如果你想在一次对话中这样做,你需要一条消息作为开始。对话中的任何信息都可以。首先,检索该消息的X-GM-THRID:
一个uid fetch 23451345 X-GM-THRID
,它给您一个64位的数字,可能是9876543876543444423。接下来,您将在同一对话中查找其他消息:
b uid search x-gm-thrid 9876543876543444423
,这将为您提供该对话中所有消息的uid,您就完成了

如果要对收件箱中的所有对话执行此操作,请发出
c uid fetch 1:*x-gm-thrid
,它将为您提供一组消息对话元组:“消息123属于对话9876543876543”


如果要在每个会话中对消息进行排序,最简单的方法可能是检索
internaldate
项并按其排序。Gmail也有一个
x-gm-msgid
,但我还没有看它是否对分类有用。

你必须匹配对话参与者(发送者/接收者)和主题。遗憾的是,电子邮件中没有一个很好的计数器,上面写着“我是这个帖子中的第8条消息”。很好,我会尝试一下,我们会让你知道的,但这似乎是一个很好的开始方式。非常感谢。我会在测试后立即回复。(没有足够的声誉来支持这个答案)我认为你应该接受这个答案,而不是支持它。向上投票是为了其他人。但我承认在这些事情上有点无知。不管怎样,希望能有帮助。是的,你是对的!你的回答引导我找到了问题的根源,稍后我将使用objective-c库发布我的答案。