使用ActionMailer :: Base接收方法解析电子邮件

时间:2011-06-22 05:46:26

标签: ruby-on-rails email parsing

我想知道是否有办法解析收到的电子邮件。

例如,有人发给我以下电子邮件:

  {
      product: "x_product",
      quantity: "1",
      price: "15",
  }

我想要的是获取此信息并将其插入数据库的方法 我知道ActionMailer :: Base中有一个名为receive的方法。 这是正确的方法吗?如何解析这个?

1 个答案:

答案 0 :(得分:1)

是的,这是正确的方法,只是谷歌“接收带有ruby on rails的邮件” - 有很多教程可以指导你。

解析取决于您将要接收的数据类型。这看起来像JSON,因此您只需让JSON解析器完成工作,它将为您提供适当的Ruby数据结构。其余的(将其放入数据库)可以由模型处理。

看起来有点像这样:

class MailReceiver < ActionMailer::Base

  def self.receive(message)
    # depending on your Rails version you can use either TMail or Mail to parse the raw mail
    mail = TMail::Mail.parse(message)

    # parse the JSON
    my_data = ActiveSupport::JSON.decode(mail.body)

    # create something with the data
    MyModel.create(my_data)
  end

end

我没有介绍从邮箱中实际获取邮件的情况。再说一次:google it,那里有很多教程。看看Fetcher,这对我一直很好。