Один из моих пользователей сообщил, что в нескольких случаях последние одна или две строки его сообщений, отправленных по электронной почте, отсутствуют.
Сообщения были значительно ниже лимита символов, и в них не было запрещённых слов. Есть ли какие-то идеи, что может быть причиной этого? В логах я ничего подобного не вижу.
При просмотре необработанных данных в таблице incoming_emails видно, что отсутствующий текст точно присутствовал в полученном письме, но не попал в отформатированное сообщение. Это ответ, а не начало новой темы.
Я видел такое, когда парсер не мог решить, являются ли последние строки подписью. Были ли в этих ответах какие-то необычные элементы форматирования, например ---?
Ничего такого, что я видел, но поле ‘raw’ в таблице incoming_emails выглядит немного странно: все слова сбиты в одну кучу без пробелов и знаков препинания.
Вот небольшой фрагмент:
nolongertalkingtothatneighborHellBienenWeberMark
Не хватает всего, начиная со слова ‘Hell’. В отформатированном тексте после ‘neighbor’ стоит точка, но после неё ничего нет.
Думаю, я понял, что произошло, но не обязательно то, как предотвратить повторение этого.
Я перехватываю входящую почту перед сохранением в почтовый ящик, который читается контейнером Discourse, и у меня есть оригинальное сообщение от этого пользователя.
Сообщение содержит сегмент text/plain и сегмент text/html.
Последняя (и отсутствующая) строка его сообщения есть в сегменте text/plain, но отсутствует в сегменте text/html, а именно последний используется Discourse для создания поста.
Таким образом, что бы ни происходило, из-за чего строки теряются, похоже, это случается ещё до того, как эти письма попадают на мой сервер.