启用 reply_by_email

我已经设置好邮件服务器,通过 HTTP API 将邮件转发到 Discourse,这已经可以正常工作了。现在我想启用 reply_by_email 功能,以便用户可以直接回复邮件。

因此,我尝试启用 reply_by_email,但 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: 在启用通过电子邮件回复之前,您必须启用手动、POP3 轮询或自定义邮件轮询器。 (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>'

有人能帮忙吗?

谢谢!
Hans

您收到的回复中,我将从这部分开始:“您必须先启用手动、POP3 轮询或启用自定义邮件轮询器,然后才能启用按邮件回复”。这听起来像是您在尝试此功能之前尚未设置 POP3mail-receiver。 (您可能更想要 mail-reciever。)我甚至不确定您是在哪里找到那些 Rails 命令的,因为这两个过程都会让您使用管理员站点的设置:

这是正确的——我都没有设置过,而是通过 API 将邮件转发到 Discourse,设置了我们的 Postfix 邮件服务器。我不确定这是否是受支持的配置,但如果可以的话,我真的很想避免运行另一个邮件服务器(mail-receiver)。

我在管理员部分找不到“启用邮件回复”设置:

我的 rails console 使用是否可能弄乱了管理员设置?

我本人也使用 mail-receiver,所以 Postfix+API 设置对我来说太复杂了。但请注意,您所在的屏幕只是用于*“发送给您会员的电子邮件”*的子部分。

我提到的回复邮件设置位于“管理”->“所有站点设置”->“电子邮件”中:

(Discourse 中有很多设置,它们的组合方式有时并不像您期望的那样。)

谢谢,@ToddZ - 我现在找到了设置,但无法启用它,错误消息与使用 Rails 控制台时相同:

根据您所做工作的描述以及 manual_polling_enabled 设置的描述,这可能就是您想要的。

1 个赞

“手动轮询已启用”设置也位于“管理”→“所有站点设置”→“电子邮件”下。

而且,由于我显然睡不着,我做了一些调查,发现很少有人尝试通过 API 配置邮件接收。以防万一您在继续过程中有所帮助,以下是我发现的内容:

(一堆链接)

在我搜索时,Discobot 浮现了这些可能已过时的信息:

您可以使用 Discourse API 来处理传入电子邮件,而无需依赖 mail-receiver 容器。/admin/email/handle_mail 端点通过 POST 接受原始电子邮件内容,允许您通过脚本或自定义集成将电子邮件直接推送到 Discourse。此方法完全绕过了对 SMTP 轮询或 mail-receiver 容器的需求。

例如,您可以使用带有包含原始电子邮件内容的 email 参数的 curl 命令将电子邮件发送到 Discourse。这种方法通常用于自定义电子邮件传递设置,尤其是在使用 AWS Lambda 或其他无服务器函数等服务时。

Discourse API 文档 中了解有关 API 端点的更多信息。

(…我在 API 文档中找不到任何相关信息。)

2018 年:此主题似乎没有解决。

2018 年:此帖子引用了一个 电子邮件指南——引用了那里已不存在的语言——并建议:“最简单的设置回复电子邮件的方法是使用 mail-receiver 容器模板,而不是尝试处理各种提供商的 API。”

2022 年:email 参数将被更改email_encoded

2022 年:另一个建议是直接使用 mail-receiver

2 个赞

@ToddZ 奏效了,非常感谢!

discourse(prod)> SiteSetting.manual_polling_enabled = true
=> true
discourse(prod)> SiteSetting.reply_by_email_enabled = true
=> true
2 个赞