Категория email в требует reply_by_email_enabled?

Ситуация

  • reply_by_email_enabled отключён, мы не хотим, чтобы люди отвечали по электронной почте
  • категория только для администраторов для уведомлений от внешней системы
  • для этой категории настроен адрес электронной почты
  • email_in включён
  • письма отправляются на адрес электронной почты категории
  • письма возвращаются с ошибкой BadDestinationAddress

Причина

После часа отладки я наткнулся на следующее: FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub

FIX: Запретить ответы на категории, когда отправка ответов по электронной почте отключена (#33641)

Когда параметр reply_by_email_enabled установлен в false, мы больше не включаем ссылку для ответа в уведомления по электронной почте. Однако мы не блокируем фактические письма, отправленные на настроенный адрес email_in, связанный с категорией. Это изменение учитывает настройку в Email::Receiver#check_address.

и затронутый код больше не будет возвращать категорию, если reply_by_email_enabled не включён.

    def self.check_address(address, include_verp = false)
      # проверка группы/категории только когда 'email_in' включён
      if SiteSetting.email_in
        group = Group.find_by_email(address)
        return group if group

        category = Category.find_by_email(address)
        return category if category && SiteSetting.reply_by_email_enabled? <-- добавлено
      end

Почему? :scream:

У меня так много вопросов:

  1. зачем вообще это изменение? Оно лишь делает систему менее гибкой. Если я не хочу, чтобы люди писали на категорию, я просто удалю адрес электронной почты из категории?
  2. почему это реализовано именно так?
  • похоже, что отправка писем в группы не является проблемой?
  • если reply_by_email_enabled равен false, то зачем вообще искать категорию?
  • поскольку категория не возвращается, ошибка становится BadDestinationAddress, что ОЧЕНЬ неверно и ОЧЕНЬ сложно отлаживать
  1. настройка, от которой теперь внезапно зависит эта логика, называется ответ по электронной почте. Это не то, что я делаю.
  2. та же путаница видна в заголовке PR, который называется «запретить ответы на категории», что не соответствует сути (в Discourse «ответ на категорию» вообще невозможен).

Помимо способа реализации, я честно говоря не вижу смысла.

Я не могу придумать НИ ОДНОЙ ситуации, когда простое удаление адреса электронной почты из категории не решило бы задачу, если нужно запретить людям писать на категорию. Последствием этого стало то, что теперь невозможно иметь категорию, принимающую письма, без включения функции ответов по электронной почте на уровне всего сайта.

Если есть действительно веская причина, которую я упускаю, пожалуйста, перекатегоризируйте это как #feature

5 лайков

Я сам это обнаружил и уже разбираюсь.

Я согласен, что исправление в FIX: Disallow replies to categories when reply by email disabled (#33… · discourse/discourse@e05ef50 · GitHub было неудачным, так как оно опиралось на побочный эффект и само его создавало, но мы этого не заметили, поскольку тесты организованы так, что условия для его срабатывания отсутствовали. Сейчас я работаю над исправлением этого.

3 лайка

Мое предложенное исправление:

3 лайка

Это уже слито @RGJ — не могли бы вы проверить после обновления, что ваша конфигурация работает как ожидалось?

2 лайка

Да, теперь всё работает как по маслу! Спасибо :slight_smile:

2 лайка