Наш форум обслуживает широкое сообщество, состоящее из разных групп, которые не взаимодействуют регулярно, но иногда нуждаются в обмене информацией. Проблема заключается в том, что если кто-то пересылает полученное письмо из одной категории в другую через email-in, сообщение попадает в исходную тему, а не в ту категорию, на адрес которой было отправлено письмо.
Детали:
Работаем на версии 2.9.0.beta1
В нашем экземпляре включены функции email-in и reply-by-mail
Для каждой категории назначен email вида discourse+КАТЕГОРИЯ@...
Шаги для воспроизведения:
Пользователь получает уведомление по электронной почте о новом сообщении в категории A
Пользователь пересылает полученное письмо в категорию B, используя её адрес discourse+CAT-B@...
Пересланное сообщение оказывается в исходной ветке в категории A
Вопрос: как гарантировать, что пересланное письмо попадёт в правильную категорию B? (без изменения заголовков письма!)
Вы имеете в виду, что оно попадает в исходную тему в категории A?
Опять же, я отвечаю, ничего не зная, и скоро кто-нибудь придёт и расскажет, как всё обстоит на самом деле, но, насколько я знаю, должно быть именно так, и ответ не переносится в новую тему только из-за изменения адреса электронной почты.
Мне не удаётся воспроизвести эту проблему. Вот мои шаги на данный момент:
Настроил CategoryA и CategoryB, присвоив им адреса для приёма почты (categorya@[MyTestSite] и categoryb@[MyTestSite])
Установил для test_user статус «Слежение» для обеих категорий
Установил email time window mins на 1 минуту (необязательно, но ускоряет процесс)
Администратор создал тему в CategoryA
Test_user получил уведомление по электронной почте о новой теме в CategoryA и переслал его с сообщением в CategoryB
В CategoryB была создана новая тема (с очень некрасивым заголовком — Fwd: [JammyDodger's Test Site] [categorya] Topic for Category A), но в ней содержалось только добавленное сообщение, а не intended пересылаемая информация
Мне не удаётся воспроизвести ситуацию, когда пересланное письмо в категорию становится ответом на существующую тему. Может быть, стоит попробовать что-то ещё?
Я только что тоже попытался воспроизвести эту ситуацию (ключевое отличие заключалось в том, чтобы нажать «Ответить», а затем вручную изменить адрес в поле «Кому», а не использовать пересылку), но у меня сообщение снова создало новую тему в категории B. Возможно, это зависит от конкретного клиента? @artur, какой вы используете?
Я только что попробовал через свой Gmail, но письмо всё равно попало в исходную категорию.
Странно — я удивлён, что у тебя получилось!
Можешь проверить заголовки пересланного письма?
Я, например, вижу, что в References указан ID исходной темы — возможно, это имеет приоритет над полем to:?
Спасибо за ссылку!
Похоже на аналогичную ситуацию, но в моём случае речь идёт о пересылке письма, а не о ответе. Поэтому я всё ещё не понимаю такого поведения.
Я постоянно пишу ответ, а потом вспоминаю о чём-то ещё, что можно попробовать. Но пока мне не удалось воспроизвести вашу проблему. Несколько возможных релевантных моментов: у меня на тестовом сайте настроен mail-receiver, а не POP3, и вы пересылаете ли первое сообщение/OP или ответ?
Привет, @JammyDodger. Я только что понял, что большинство моих категорий исторически были настроены как Category mirrors a mailing list. Не могли бы вы попытаться воспроизвести проблему при включении этой опции?
Я только что попробовал отключить это на моём тестовом экземпляре, и, похоже, это решает странное поведение.
Обычно find_related_post_with_key включен в настройках сайта. Отключать его для всего сайта не рекомендуется, так как это позволяет подделывать личность пользователя на основе адреса электронной почты. Входящие письма, отправленные в почтовый список, всегда используют Message-ID письма для поиска связанных постов и игнорируют значение этой настройки сайта.
Я в основном оставил эту опцию из-за другого момента:
Обычно Discourse ожидает, что входящие письма будут содержать текст, отформатированный в Markdown. Пользователи почтовых списков обычно не знают об этом требовании, поэтому Discourse не интерпретирует Markdown (кроме блоков кода, заключенных в три обратных апострофа) или HTML в простых текстовых письмах и постах, публикуя их с сохранением исходного форматирования.
Это имеет смысл для людей, которые ничего не знают о Markdown
Теперь, когда вы знаете больше о том, как работают настройки вместе, сможете ли вы получить достаточно точное представление о том, как вы хотите, чтобы это работало?
Так что, я думаю, для чистого зеркала списка рассылки оно выполняет свою работу корректно.
Я посмотрю, как пользователи справятся с Markdown — они наверняка не знают, что это требуется!
Одна проблема, которая возникла, когда я отключил зеркало списка рассылки, заключается в том, что в случае автоматически генерируемых сообщений, отправленных от имени некоторых пользователей, возникает ошибка Discourse::InvalidAccess. Сообщение об отказе гласит:
Ваша учётная запись не имеет прав для создания новых тем в этой категории.
Хотя раньше для того же пользователя это работало. Так что, видимо, опция зеркала отключает какой-то вид защиты для этого.