Электронная почта

Я работаю в приложении службы поддержки, где у меня есть автономный скрипт, который запрашивает почтовый сервер и анализирует найденную там почту.
Я сталкиваюсь со следующей проблемой: Как мне достоверно определить, какая почта в ответ на какую почту?
Я мог бы добавить что-то в тему, например "[ticket:21312]", и искать это, но что, если пользователь сменит тему? Есть ли другой способ? Могу ли я сделать это, установив собственный почтовый заголовок и поищите его, иначе заголовок не будет сохранен между почтовыми серверами при ответе пользователя? Что делать, когда я отправляю сообщение из моего приложения несуществующему пользователю или пользователю, у которого заполнена квота, и его сервер отвечает обычным стандартным сообщением "демон почты в.... не может...", тогда Тема также будет изменена, и я не могу правильно разместить сообщение как ответ на существующее письмо.

Как это делает Gmail? Там сообщения сортируются отлично почти во всех случаях.

3 ответа

Решение

В почтовом канале службы поддержки есть 3 основных метода:

а) включить идентификатор в тему где-то (работает нормально на практике)

б) иметь идентификатор в теле где-то

c) использовать автоматически сгенерированный псевдоним электронной почты с идентификатором, например "case-76236781980893@helpdesk.mycompany.com". это может быть легко обработано чем-то вроде procmail или скриптом для определения идентификатора.

В gmail может использоваться комбинация темы, заголовка In-Reply-To (может быть не определено) (ссылки также и заголовки Original-Message-ID также возможны) и различных эвристик, которые работают очень хорошо, но, конечно, не обязательно пуленепробиваемые и чуть больше вовлечены в реализацию. что-то вроде оригинального алгоритма потоков nestscape. хотя некоторые сообщают, что gmail не использует заголовок In-Reply-To и полагается в основном на тему (как в этом посте).

Как вы говорите, пользовательские заголовки могут потеряться, и тема может измениться. Используйте оба. Если он существует, вы можете определить нить. Я не знаю лучшего способа решить это.

Если ваше сообщение было отправлено с Message-ID- Заголовок любого отправителя, соответствующего стандартам, должен добавить In-Reply-ToЗаголовок ссылается на ваш идентификатор. Дополнительно Referencesдолжен содержать список всех предыдущих писем в этой теме.

Это работает с большинством почтовых клиентов, чтобы быть уверенным в том, что для плохих клиентов вам нужно использовать тему, проще всего, добавив элемент "[проблема:123]", вторичный запасной вариант - распознать тему (после удаления "Re:" часть всех вариантов) для этого может помочь то, что вы знаете большинство ваших законных отправителей...

Другие вопросы по тегам