Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javax.mail和IMAP从GMail获取消息的UID_Java_Email_Gmail_Imap - Fatal编程技术网

使用javax.mail和IMAP从GMail获取消息的UID

使用javax.mail和IMAP从GMail获取消息的UID,java,email,gmail,imap,Java,Email,Gmail,Imap,我正在使用javax.mail使用IMAP从GMail检索邮件。我还想获得应用于每封邮件的标记,因此我正在迭代存储中的所有文件夹(实际上是标记)并为彼此下载邮件 我使用ImapFolder的方法获取每条邮件的UID,然后比较它们以识别不同文件夹中的相同邮件 例如,如果我将邮件“Hello”标记为“A”和“B”,我将遍历文件夹“Inbox”、“A”和“B”,并从每个文件夹中获得相同的邮件;因此,我可以保留一份标有“收件箱”、“a”和“B”的副本 但是,getUID方法返回一个文件夹相对ID,因此相

我正在使用javax.mail使用IMAP从GMail检索邮件。我还想获得应用于每封邮件的标记,因此我正在迭代存储中的所有文件夹(实际上是标记)并为彼此下载邮件

我使用ImapFolder的方法获取每条邮件的UID,然后比较它们以识别不同文件夹中的相同邮件

例如,如果我将邮件“Hello”标记为“A”和“B”,我将遍历文件夹“Inbox”、“A”和“B”,并从每个文件夹中获得相同的邮件;因此,我可以保留一份标有“收件箱”、“a”和“B”的副本

但是,getUID方法返回一个文件夹相对ID,因此相同的邮件在不同的文件夹中可能有不同的ID,或者不同的邮件在不同的文件夹中可能有相同的ID。在这个例子中。“HellO”可能在“A”中显示为mail 1,在“B”中显示为mail 2


是否有一种方法可以独立于文件夹为每封邮件获取存储相对id?或者一种更好的方法来获取附加到单个邮件的标签?

我认为唯一的方法是使用一个哈希,您可以根据邮件头计算自己。

得到的答案是:有一个“邮件id”头包含了我正在寻找的值。

我认为必须使用它,如果可能的话,我想避免它,但似乎没有别的办法。顺便说一句,标题应该包括主题、开始、结束、抄送、日期和。。。还有什么可以唯一标识邮件的吗?在任何情况下,我都会包含“邮件ID头”字段。请考虑以下情况:您在邮件组中,您收到一封发送到该组的邮件,但发件人会同时将该邮件显式发送给您。那么你应该收到2封邮件,但是邮件id是相同的,因为它是在发送方发送的。抄送日期的主题也将相同,因此哈希将相同。为了区分,应该将Delivered To添加到哈希中,在这种情况下,它将区分这两条消息。Message-ID在大多数情况下是唯一的,但并非在所有情况下都是唯一的。尤其是自动发送者通常会生成相同的ID,或者根本没有(我也看到过空的ID—消息ID:)