Rails Gem или код, чтобы приложение rails отвечало на электронную почту и создавало запись в базе данных. - PullRequest
1 голос
/ 30 июля 2010

Я создаю приложение ruby ​​on rails и хочу, чтобы мои пользователи могли отправлять приложения по электронной почте, чтобы приложение получало электронную почту и создавало запись о проблеме в базе данных.Есть ли GEM или код, который можно использовать для того, чтобы приложение rails получало электронную почту, разбирало тело и вставляло его в таблицу вопросов.

1 Ответ

2 голосов
/ 30 июля 2010

Я не знаю, есть ли драгоценный камень для выполнения всей задачи, но технически он вам не нужен.Я недавно сделал это, и хотя работа с библиотекой IMAP ruby ​​не самая забавная / интуитивно понятная вещь в мире, она выполняет свою работу.

IMAP можно использовать для программного доступа и взаимодействия с учетной записью электронной почты.,Вот пример прямо из моего кода (кое-что запутанное, чтобы кому-то было легче его реализовать):

require 'net/imap'

imap = Net::IMAP.new("imap.gmail.com", 993, true)
imap.login(CONFIG["username"], CONFIG["password"])
imap.select('INBOX')
imap.search(["NOT", "DELETED"]).each do |mail_id|
  mail = TMail::Mail.parse(imap.fetch(mail_id, "RFC822").first.attr["RFC822"])
  do_something_cool(mail)
  imap.store(mail_id, "+FLAGS", :Deleted)
end
imap.expunge
imap.logout()
imap.disconnect()

В этом примере я обращаюсь к учетной записи gmail с помощью библиотеки IMAP, иду в папку «Входящие» изахват каждого письма, которое не было удалено.Жемчужина TMAIL, хотя и не обязательна, значительно облегчает работу с электронной почтой.В моем случае мне нужно удалить электронные письма после того, как я их проанализирую, поэтому я добавляю флаг удаления в электронное письмо, а затем, когда я закончу, я очищаю учетную запись от всех удаленных электронных писем.

Следующая половинаанализирует электронную почту для данных, которые вы хотите, и делает записи из них.Я оставляю эту часть разработчику.

...