我正在尝试使用IMAP(在objective-c中)获取gmail电子邮件,并且我想为每个线程分离在会话中发送的每条消息。为了让自己更清楚,想象一下像这样的对话:
约翰说:嗨迈克,这是第一封电子邮件 迈克回答:嘿约翰,你好吗? 约翰回答:伟大的迈克,谢谢。
如果我通过IMAP收到John的电子邮件,我只会收到一封电子邮件,即: 嘿约翰,你好吗? 5月21日星期三, 嗨,迈克,这是第一封电子邮件
我想从我提取的一个电子邮件中收到两条不同的消息。 第一条消息是“嗨麦克,那是第一封电子邮件” 第二个信息是“嘿约翰,你好吗?”
我查看了标题中的message-id字段,但我无法弄清楚如何将其链接回实际消息。
有什么想法吗? 谢谢!
[编辑]:到目前为止,我可以在John的收件箱中解析电子邮件并提取包含该邮件的相关字符串。但我想要的是实际的消息(带有标题和所有),而不仅仅是包含消息的字符串。
答案 0 :(得分:0)
Gmail有一个非常好的IMAP扩展程序来执行此操作。不过,我从未尝试过使用objective-c库。
如果您想为一个对话执行此操作,则需要一条消息开头。会话中的任何消息都可以。首先,检索该消息的X-GM-THRID:a 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
,但我还没有看到它对排序是否有用。