В категории электронной почты требуется 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

ИСПРАВЛЕНИЕ: Запрет ответов на категории, если отправка ответов по почте отключена (#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 «ответ на категорию» вообще невозможен).

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

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

Если есть действительно веская причина, которую я упускаю, не стесняйтесь переклассифицировать как Contribute > Feature

5 лайков

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

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

3 лайка

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

3 лайка

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

2 лайка

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

2 лайка