如何为IMAP帐户中的每封电子邮件计算唯一ID字符串?
我正在编写一个脚本,必须经常将所有丢失的邮件从一个IMAP帐户复制到另一个帐户.我想避免在每次更新时都重复,因此我必须确定一个帐户上的内容以及另一个帐户上的内容.
并非所有的电子邮件有一个message_id,我看不出之间的区别是什么message_id以及uid是-任何人可以告诉我吗?
在我看来,message_id使用imap_append时没有改变- 任何人都可以确认吗?
为每封电子邮件生成唯一的ID字符串时,除了消息ID,fx电子邮件标题和日期之外还有许多其他选项,但我不知道该选择什么:http: //www.php.net/manual/en/ function.imap-headerinfo.php
una*_*bat 10
UID在邮箱中是唯一的,但不在邮箱之间映射,因此在邮箱之间匹配电子邮件没有用处.
message_id旨在对所有电子邮件全局唯一,并由发送电子邮件服务器生成.如果服务器配置正确,则它发送的每条消息都将包含message_id,这可用于匹配邮箱之间的电子邮件.但是,配置错误的服务器可能无法分配message_id.在这种情况下,senderaddress&udate的散列总是被证明对我来说是独一无二的 - 如果电子邮件来自同一个人在同一个微秒,它将是相同的消息.注意 - 使用发件人而不是from - from可以比发件人更容易欺骗.
根据我的说法,唯一的 id 可以生成如下:
键:邮件的纪元时间(来自日期字段)
但同时用户可以收到多封邮件。
key: 邮件纪元时间 + MailSize
在特定时间,一个收件人id可以收到相同大小的不同邮件
KEY:邮件的纪元时间+MailSize+接收服务器IP(可以从received:字段获取)
在特定时间,收件人 ID 也可以从同一 ip 接收相同大小的不同邮件。
key:邮件的纪元时间+MailSize+接收服务器IP(可以从received:字段获取)+邮件的md5sum。
该密钥重复的可能性非常非常低。
消息 ID 通常是发送消息的设备的标识符,也可能是其他内容,完全取决于域,并且对于不同的邮件可以是相同的,并且可能可能不完全存在。
uid 是 imap 服务器用来跟踪邮件身份的东西。但是,如果在这期间邮件已被删除或移动,并且由于服务器代码有问题,则可能会为不同的邮件分配相同的 uid。
| 归档时间: |
|
| 查看次数: |
5120 次 |
| 最近记录: |