Фон состоит в том, что я пытаюсь перенести почту между двумя серверами IMAP и хочу убедиться, что в случае повторной попытки повторяющееся сообщение не будет перенесено снова. Я бы хотел запросить у каждого сервера IMAP что-то, эквивалентное md5 необработанного электронного письма, чтобы я мог сравнить, какие электронные письма были перенесены, а какие нет.
Возможно ли что-то подобное в IMAP4? Я вижу UID, но он кажется уникальным только для сервера, а не на самом деле уникальным идентификатором содержимого.
Еще предстоит приличная загрузка, но попробуйте загрузить BODY.PEEK[HEADER]
сообщения, чтобы получить только раздел заголовка, и сравнить Message-ID
заголовок.
Идентификаторы сообщений должны быть уникальными, но это совсем не гарантируется, и на планете существует множество неработающих почтовых программ. Если вам нужно быть абсолютно уверенным, проверьте контрольную сумму самостоятельно, в других случаях Message-ID может и должен быть достаточным.
Вероятно, вы захотите проверить значение заголовка «Message-ID». Это не совсем то же самое, что MD5 всего сообщения, но каждое уникальное сообщение должно иметь уникальное значение идентификатора; поэтому можно с уверенностью предположить, что если вы видите идентификатор сообщения на целевом сервере, сообщение уже было скопировано.