# 删除传入电子邮件的主题？

**URL:** https://meta.discourse.org/t/strip-incoming-email-subject/132242
**Category:** Support
**Created:** [2019 年10 月 30 日 13:57 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242 "2019-10-30T13:57:24Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### 作者： ![paradeiser](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/paradeiser/32/152821_2.png) [@paradeiser](https://meta.discourse.org/u/paradeiser)
#### 发布日期： [2019 年10 月 30 日 13:57 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/1 "2019-10-30T13:57:24Z")

</div>

亲爱的论坛，

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

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

---

<div class="post-metadata">

### 作者： ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### 发布日期： [2019 年10 月 30 日 16:14 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/2 "2019-10-30T16:14:30Z")

</div>

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

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

```plaintext
    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/](http://rubular.com/) 上进行实验）。

---

<div class="post-metadata">

### 作者： ![paradeiser](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/paradeiser/32/152821_2.png) [@paradeiser](https://meta.discourse.org/u/paradeiser)
#### 发布日期： [2019 年10 月 30 日 22:02 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/3 "2019-10-30T22:02:08Z")

</div>

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

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

---

<div class="post-metadata">

### 作者： ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### 发布日期： [2019 年10 月 30 日 22:03 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/4 "2019-10-30T22:03:49Z")

</div>

如果您在容器内

```plaintext
cd /var/discourse
./launcher enter app

```

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

```
find . -name importer.rb

```

---

<div class="post-metadata">

### 作者： ![paradeiser](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/paradeiser/32/152821_2.png) [@paradeiser](https://meta.discourse.org/u/paradeiser)
#### 发布日期： [2019 年11 月 4 日 18:25 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/5 "2019-11-04T18:25:32Z")

</div>

我使用了修正后的正则表达式修改了 `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/,"")`

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

---

<div class="post-metadata">

### 作者： ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### 发布日期： [2019 年11 月 6 日 21:14 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/6 "2019-11-06T21:14:57Z")

</div>

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

---

<div class="post-metadata">

### 作者： ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### 发布日期： [2019 年11 月 7 日 05:00 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/7 "2019-11-07T05:00:02Z")

</div>

> [@paradeiser](#):
>
> 我订阅了相关 Discourse 分类的电子邮件地址。

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

---

<div class="post-metadata">

### 作者： ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### 发布日期： [2023 年7 月 28 日 15:17 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/8 "2023-07-28T15:17:52Z")

</div>



---

<div class="post-metadata">

### 作者： ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### 发布日期： [2023 年8 月 7 日 13:00 UTC](https://meta.discourse.org/t/strip-incoming-email-subject/132242/9 "2023-08-07T13:00:30Z")

</div>

此主题已在 9 天后自动关闭。不允许回复。
