Назад | Перейти на главную страницу

Есть ли способ определить, является ли электронное письмо на двух серверах IMAP одинаковым, если не считать фактического содержания каждого сообщения?

Фон состоит в том, что я пытаюсь перенести почту между двумя серверами IMAP и хочу убедиться, что в случае повторной попытки повторяющееся сообщение не будет перенесено снова. Я бы хотел запросить у каждого сервера IMAP что-то, эквивалентное md5 необработанного электронного письма, чтобы я мог сравнить, какие электронные письма были перенесены, а какие нет.

Возможно ли что-то подобное в IMAP4? Я вижу UID, но он кажется уникальным только для сервера, а не на самом деле уникальным идентификатором содержимого.

Еще предстоит приличная загрузка, но попробуйте загрузить BODY.PEEK[HEADER] сообщения, чтобы получить только раздел заголовка, и сравнить Message-ID заголовок.

Идентификаторы сообщений должны быть уникальными, но это совсем не гарантируется, и на планете существует множество неработающих почтовых программ. Если вам нужно быть абсолютно уверенным, проверьте контрольную сумму самостоятельно, в других случаях Message-ID может и должен быть достаточным.

Вероятно, вы захотите проверить значение заголовка «Message-ID». Это не совсем то же самое, что MD5 всего сообщения, но каждое уникальное сообщение должно иметь уникальное значение идентификатора; поэтому можно с уверенностью предположить, что если вы видите идентификатор сообщения на целевом сервере, сообщение уже было скопировано.