9

IMAP アカウントの各メールの一意の ID 文字列を計算するにはどうすればよいですか?

不足しているすべてのメールをある IMAP アカウントから別のアカウントに頻繁にコピーする必要があるスクリプトを作成しています。更新のたびに重複するのは避けたいので、一方のアカウントに何があり、もう一方のアカウントに何があるかを特定する必要があります。

すべてのメールに があるわけではなく、とmessage_idの違いがわかりません。誰か教えていただけますか?message_iduid

imap_appendmessage_idを使用しても は変更されないように思えます- 誰でもそれを確認できますか?

メールごとに一意の ID 文字列を生成する場合、メッセージ ID、FX メールのタイトル、日付以外にも多くのオプションがありますが、何を選択すればよいかわかりません: http://www.php.net/manual/en/ function.imap-headerinfo.php

4

2 に答える 2

13

UID はメールボックス内で一意ですが、メールボックス間でマッピングされないため、メールボックス間の電子メールの照合には使用できません。

message_id は、すべての電子メールに対してグローバルに一意であることを意図しており、送信電子メール サーバーによって生成されます。サーバーが正しく構成されている場合、サーバーが送信するすべてのメッセージには message_id があり、これを使用してメールボックス全体で電子メールを照合できます。ただし、不適切に構成されたサーバーは、message_id を割り当てない場合があります。この場合、senderaddress と udate のハッシュは常に私にとって一意であることが証明されています。電子メールが同じ人から同じマイクロ秒で送信された場合、同じメッセージになります。注 - from ではなく、sender を使用してください。from は、sender よりも簡単にスプーフィングされる可能性があります。

于 2013-10-14T16:09:31.837 に答える
4

私によると、一意のIDは次のように生成できます。

キー:メールのエポック時間(日付フィールドから)

しかし同時に、ユーザーは複数のメールを受け取ることができます。

キー:メールのエポック時間+ MailSize

特定の時間に、受信者IDは同じサイズの異なるメールを受信できます

キー:メールのエポック時間+ MailSize +受信サーバーIP(受信:フィールドから取得できます)

特定の時間に、受信者IDは、同じIPから同じサイズの異なるメールを受信することもできます。

キー:メールのエポック時間+ MailSize +受信サーバーIP(受信:フィールドから取得可能)+メールのmd5sum。

このキーが重複する可能性は非常に低いです。

メッセージIDは通常、メッセージを送信したデバイスの識別子であるか、他の何かである可能性があり、完全にドメインに依存し、異なるメールで同じである可能性があり、完全に存在しない可能性があります。

uidは、imapサーバーがメールIDを追跡するためのものです。ただし、メールが削除または移動され、バグのあるサーバーコードが含まれている場合は、別のメールに同じuidが割り当てられる可能性があります。

于 2013-02-15T13:03:22.097 に答える