Включение функции «Ответ по электронной почте»

Я настроил наш почтовый сервер для пересылки писем в Discourse через HTTP по API, и это работает. Теперь я хочу включить reply_by_email, чтобы пользователи могли отвечать на сообщения напрямую.

Поэтому я пытаюсь включить reply_by_email в консоли Rails, но Discourse отклоняет мой запрос:

discourse(prod)> SiteSetting.reply_by_email_address
=> "reply+%{reply_key}@<our-valid-domain>.de"
discourse(prod)> SiteSetting.email_in
=> true
discourse(prod)> SiteSetting.reply_by_email_enabled = true
lib/site_settings/type_supervisor.rb:271:in `validate_value': reply_by_email_enabled: You must enable either manual, POP3 polling or have a custom mail poller enabled before enabling reply by email. (Discourse::InvalidParameters)
	from lib/site_settings/type_supervisor.rb:177:in `to_db_value'
	from lib/site_setting_extension.rb:623:in `add_override!'
	from lib/site_setting_extension.rb:990:in `block in setup_methods'
	from (discourse):15:in `<main>'

Может кто-нибудь помочь?

Спасибо!
Ханс

Я бы начал с этой части вашего ответа: «Вы должны включить либо ручную, либо POP3-опрос, либо настроить собственный опросщик почты, прежде чем включать ответ по электронной почте».

Это звучит так, будто вы, возможно, не настроили POP3 или mail-receiver перед попыткой этого. (Скорее всего, вам нужен mail-receiver.)

Я даже не уверен, где вы могли найти эти команды Rails, поскольку оба этих процесса предполагают использование настроек сайта в разделе Администратор:

Это верно — я не настраивал ни то, ни другое, но настроил наш почтовый сервер Postfix для пересылки писем в Discourse через его API. Не уверен, что такая конфигурация поддерживается, но я бы очень хотел избежать запуска ещё одного почтового сервера (mail-receiver), если это возможно.

Я не нахожу настройку «Reply by email enabled» (Включена отправка ответов по электронной почте) в своей админ-панели:

Возможно ли, что мои действия в консоли Rails нарушили настройки администратора?

Я сам использую mail-receiver, поэтому настройка Postfix+API для меня сложна, но обратите внимание, что экран, на котором вы находитесь, — это подраздел, посвящённый только «письмам, отправленным вашим участникам».

Настройки, которые я упомянул для ответа по электронной почте, находятся в разделе Администрирование → Все настройки сайта → Электронная почта:

(В Discourse огромное количество настроек, и они не всегда сгруппированы так, как вы могли бы ожидать.)

Спасибо, @ToddZ — я нашёл настройку, но не могу её включить, и сообщение об ошибке такое же, как при использовании консоли Rails:

Исходя из описания ваших действий и описания окружения, manual_polling_enabled — это, возможно, то, что вы ищете.

Настройка «Включено ручное опросирование» также находится в разделе Админ → Все настройки сайта → Электронная почта.

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

(много ссылок)

В процессе поиска Discobot выдал эту, возможно, устаревшую информацию:

Вы можете использовать API Discourse для обработки входящих писем без использования контейнера mail-receiver. Эндпоинт /admin/email/handle_mail принимает сырое содержимое письма через POST, что позволяет отправлять письма напрямую в Discourse с помощью скрипта или кастомной интеграции. Этот метод полностью исключает необходимость в SMTP-опросе или контейнере mail-receiver.

Например, вы можете отправить письмо в Discourse с помощью команды curl, используя параметр email, содержащий сырое содержимое письма. Этот подход часто используется в кастомных настройках доставки электронной почты, особенно при использовании таких сервисов, как AWS Lambda или других бессерверных функций.

Подробнее об этом эндпоинте API читайте в документации API Discourse.

(…Я ничего об этом не нашел в документации API.)

2018: Эта тема не имела решения.

2018: Этот пост ссылается на руководство по электронной почте — упоминая язык, которого там больше нет, — и также рекомендует: «Самый простой способ заставить функцию ответа по электронной почте работать — использовать шаблон контейнера mail-receiver, вместо того чтобы пытаться работать со всевозможными различными API от разных провайдеров».

2022: Параметр email должен был быть изменен на email_encoded.

2022: Еще одна рекомендация просто использовать mail-receiver.

@ToddZ Сработало, большое спасибо!

discourse(prod)> SiteSetting.manual_polling_enabled = true
=> true
discourse(prod)> SiteSetting.reply_by_email_enabled = true
=> true