Я не знаю, есть ли драгоценный камень для выполнения всей задачи, но технически он вам не нужен.Я недавно сделал это, и хотя работа с библиотекой 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, хотя и не обязательна, значительно облегчает работу с электронной почтой.В моем случае мне нужно удалить электронные письма после того, как я их проанализирую, поэтому я добавляю флаг удаления в электронное письмо, а затем, когда я закончу, я очищаю учетную запись от всех удаленных электронных писем.
Следующая половинаанализирует электронную почту для данных, которые вы хотите, и делает записи из них.Я оставляю эту часть разработчику.