删除传入电子邮件的主题?

亲爱的论坛,

我正在从邮件列表轮询邮件到 Discourse,邮件的主题会生成新话题。目前这部分运行正常。
现在我需要删除主题的前半部分,因为它只是邮件列表的名称。
例如:“[mailinglist] 实际主题”,我只想提取“实际主题”。

我还没在网上找到合适的解决方案,有人知道吗?
谢谢,
marko

我本以为里面有代码可以去除那个,但自从我上次做 mbox 迁移已经三年了。

标题是在 ...mbox/importer.rb 中设置的:

    def map_first_post(row)
      mapped = map_post(row)
      mapped[:category] = category_id_from_imported_category_id(row['category'])
      mapped[:title] = row['subject'].strip[0...255]
      mapped
    end

你可以将标题行修改为类似这样:

  mapped[:title] = row['subject'].strip[0...255].gsub(/^[.*?\]/,"")

我很少能一次性写对正则表达式,所以你需要做一些测试(或许可以在 http://rubular.com/ 上进行实验)。

感谢指出这一点。
我猜正则表达式应该是 /^\[(.*?)\]\s/,用来匹配行首的 "[…] " 这样的内容。

能否请您详细说明一下在我的安装环境中如何找到 importer.rb 文件?(我是在本地 Ubuntu 虚拟机上按照“30 分钟内安装”指南进行安装的。)

如果您在容器内

cd /var/discourse
./launcher enter app

从您运行脚本的任何位置尝试:

find . -name importer.rb

我使用了修正后的正则表达式修改了 mbox/importer.rb,并尝试了静态替换字符串,但传入的话题没有任何变化。

我来澄清一下:

  • 我将相关 Discourse 分类的电子邮件地址(用于接收邮件的自定义地址;√ 该分类镜像了邮件列表)订阅到了现有的邮件列表中
  • Discourse 接收这些邮件并创建相应的话题
  • 由于邮件列表会在邮件主题前添加前缀,我希望在 Discourse 创建话题之前将其移除

我现在的问题是:

  1. ./script/import_scripts/mbox/importer.rb 是正确的导入器吗?
  2. .gsub("remove this prefix ","") 的语法正确吗?

我尝试了:
mapped[:title] = row['subject'].strip[0...255].gsub(/^\[(.*?)\]\s/,"")

到目前为止,这没有任何效果……
再次感谢。

导入器与此无关。你需要一个插件(代码量不应超过几行)或一个用于 topic_created webhook 的消费者,它可以调用 API 来修改主题标题。

我完全误解了。我以为你正在导入 mbox 文件。我所说的所有内容对你的情况都是错误的。抱歉。