在rails中传入邮件,从主题获取ID

时间:2014-12-05 05:59:09

标签: ruby-on-rails ruby ruby-on-rails-3 email ruby-on-rails-4

所以我正在建立一个支持系统,需要接受传入的邮件并相应地创建或更新我的“门票”。因此,如果它存在则更新,或者如果不存在则创建。

我需要从主题行获取ticket_id,我的票证主题通常如下:

“打开[MySupport - #13管理]网站问题”

说明: 打开 - Ticket.status, MySupport - 每个票证主题的静态测试, 13 - Ticket_id, 管理 - Ticket.department, 网站问题 - Ticket.subject

所以我使用mailman接收邮件,如何删除本例中的数字13以将其保存到本地ticket_id中,以便我可以检查是否需要更新或创建票证?

由于

1 个答案:

答案 0 :(得分:1)

你有:

subject = "Open [MySupport - #13 Management] Problem With Website"

现在做一个简单的正则表达式:

subject.scan(/#(\d*)/)
# => [["13"]]

您可以查看:

a = subject.scan(/#(\d*)/)
if a.size > 0
 ticket_id = a[0][0]
else
 ticket_id = nil
end

注意:我假设主题将始终采用此模式,而在其他情况下,主题不会包含"#"。如果不是这样,您可以根据您的要求使正则表达式更严格。