在PHP中使用IMAP获取唯一的电子邮件id

在PHP中使用IMAP获取唯一的电子邮件id,php,imap,Php,Imap,如何计算IMAP帐户中每封电子邮件的唯一id字符串 我正在制作一个脚本,它必须经常将所有丢失的邮件从一个IMAP帐户复制到另一个帐户。我希望避免在每次更新时重复,因此我必须确定一个帐户上的内容和另一个帐户上的内容 并非所有电子邮件都有消息id,我看不出消息id和uid之间有什么区别-有人能告诉我吗 在我看来,消息\u id在使用时没有更改-有人能确认吗 为每封电子邮件生成唯一的id字符串时,除了消息id、fx电子邮件标题和日期之外,还有许多其他选项,但我不知道选择什么: 根据我的说法,可以按如下

如何计算IMAP帐户中每封电子邮件的唯一id字符串

我正在制作一个脚本,它必须经常将所有丢失的邮件从一个IMAP帐户复制到另一个帐户。我希望避免在每次更新时重复,因此我必须确定一个帐户上的内容和另一个帐户上的内容

并非所有电子邮件都有
消息id
,我看不出
消息id
uid
之间有什么区别-有人能告诉我吗

在我看来,
消息\u id
在使用时没有更改-有人能确认吗

为每封电子邮件生成唯一的id字符串时,除了消息id、fx电子邮件标题和日期之外,还有许多其他选项,但我不知道选择什么:

根据我的说法,可以按如下方式生成唯一id:

关键字:邮件的纪元时间(从日期字段)

但同时用户可以收到多封邮件

关键字:邮件的纪元时间+邮件大小

在特定时间,接收者id可以接收相同大小的不同邮件

关键字:邮件纪元时间+邮件大小+接收服务器IP(可从Received:字段获取)

在特定时间,接收者id也可以从同一ip接收相同大小的不同邮件

关键字:邮件的纪元时间+邮件大小+接收服务器IP(可从Received:字段获取)+MD5邮件总数

此密钥重复的可能性非常低

消息id通常是发送消息的设备或其他设备的标识符,完全取决于域,对于不同的邮件可以相同,可能不完全存在


uid是imap服务器跟踪邮件标识的工具。但是,如果邮件已被删除或移动,并且服务器代码有问题,则可能会为不同的邮件分配相同的uid。

uid在邮箱中是唯一的,但不会在邮箱之间映射,因此无法在邮箱之间匹配邮件


邮件id对于所有电子邮件都是全局唯一的,由发送电子邮件的服务器生成。如果服务器配置正确,则它发送的每封邮件都会有一个邮件id,这可用于跨邮箱匹配电子邮件。但是,配置不当的服务器可能无法分配邮件id。在这种情况下,senderaddress&udate的散列对我来说总是唯一的-如果电子邮件在同一微秒内来自同一个人,它将是同一封邮件。注意-使用发件人而不是发件人-发件人可能比发件人更容易被欺骗。

检查(
发件人
日期
&
大小
)可能会得到唯一的组合。遗憾的是,很少有使用过PHP-IMAP的人不更新手册中的示例。是否
IMAP\u uid()
返回
message\u id
?如果电子邮件没有
消息id
,它会返回什么?我认为uid在某些情况下会发生变化。。。。但我不确定…我认为在某些情况下尺寸会改变。。。。也许我应该检查一下(发件人、日期、主题、邮箱名、邮件id)?如果同一个发件人在一秒钟内发送了多封邮件,而没有
邮件id
?人类做不到,机器(自动化)可以!