Парсинг писем с помощью ActionMailer :: Base метода приема - PullRequest
1 голос
/ 22 июня 2011

Я хочу знать, есть ли способ проанализировать полученное письмо.

Например, кто-то отправляет мне следующее письмо:

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

Мне нужен способ получить эту информацию и вставить ее в базу данных. Я знаю, что в ActionMailer :: Base есть метод с именем receive. Это правильный подход? Как это разобрать?

1 Ответ

1 голос
/ 22 июня 2011

Да, это правильный подход, просто Google "получать письма с ruby ​​на рельсах" - есть множество учебников, которые помогут вам.

Анализ зависит от типа данных, которые вы собираетесь получить. Это похоже на 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, есть тонны учебников там. Взгляните на Fetcher , который всегда хорошо мне служил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...