当前位置: 首页 > 知识库问答 >
问题:

IMAP,使用消息id跟踪移动的消息

司寇书
2023-03-14

我们正在开发一个用Java编写的邮件客户端。它具有相同的功能,如Outlook或雷鸟等。它直接与邮件服务器通信。此外,我们的业务规则要求我们将所有消息存储在数据库中,并且消息应该始终保持同步。我知道那不太适合IMAP,但是我们必须把所有的东西都保存在我们的数据库中。问题出现了,如何跟踪从文件夹A移动到文件夹B的IMAP消息?我们怎样才能知道这件事?如果您从A中删除一条消息,它将从A中删除,并在B中创建新消息,结果是:消息的UID值将更改。我们可以依赖于在标题中找到的MessageID吗?我检查了一些邮件服务器,发现邮件头中的邮件标识保持不变。但是我在哪里读到过,根据邮件服务器的不同,邮件可能是空的。

>

IMAPMessage m;
m.setHeader("myHeader", "myValue");

stackoverflow中有一些建议,据说生成一个哈希,包括MessageId和其他参数,如发送者、主题等,这是一种安全的方法吗?如果没有提供唯一的MessageID或没有提供MessageID,我们可能会遇到冲突。

共有1个答案

呼延晋
2023-03-14

你可以做三件事。

首先是message-id。如果你的失败模式足够好,你可以相信message-id现在是存在的并且是唯一的。在您的情况下,如果消息id不存在,并且消息被移动,那么故障是否只是因为您浪费了数据库中的空间和/或下载了两次消息?这些天浪费的空间会很小。

第二,x-gm-msgstr。这是gmail特有的功能,63位的数字永远不会改变。如果两个消息具有相同的x-gm-msgstr,则它们是相同的。

第三,COPYUID响应代码告诉您有关移动的信息,但仅适用于您移动时,而不适用于其他人移动时。

总而言之,这些应该可以让你很好地理解用户邮箱的变化。

 类似资料:
  • 问题内容: 我有通过base64编码和8bit编码发送的电子邮件。我想知道如何使用imap_fetchstructure检查消息的编码(因为这样做大约两个小时,所以丢失了)然后正确解码。 Gmail和Mailbox(iOS上的应用)以8位发送,而Windows 8的Mail应用以base64发送。无论哪种方式,我都需要通过检测已使用的编码类型来解码其8bit还是base64。 使用PHP 5.1.

  • 但是,问题是,我没有在日志部分得到任何消息,我没有找到如何自定义字段。 问题 这就是我的问题。是否可以将至少消息信息添加到事务日志(第一张图片),是否可以至少将自定义字段添加到日志部分(第二张图片),是否有方法使日志至少可点击?(也是第二张图片,我的意思是它只是纯文本,我必须去发现和使用这些信息,如ctrl c ctrl v)最后,为什么日志被标记为错误,如果它只是一个日志,并像日志一样使用?我试

  • 有可能做到这一点吗?

  • Vert. x和kubernetes携手并进。如果我使用istio作为服务网格,Zipkin的请求跟踪是否能够跟踪通过事件总线完成的通信? 客户- istio是否能够跟踪通过eventbus完成的请求? 跟踪页面上说,头需要通过http或grpc进行传播,但eventbus通过tcp发送消息,这是否意味着istio将无法跟踪请求并显示可视化工具[瀑布图和所有服务的可视化] Vertx主页 Even