Разбор электронной почты в Ruby с использованием Action Mailer - PullRequest
1 голос
/ 21 апреля 2010

Я получаю почту, используя net / pop, но мне также нужно проанализировать почту, чтобы получить тему, адрес и тело письма. Есть идеи с Action Mailer? Я должен использовать сторонние гемы (нет, даже не Tmail)

require 'rubygems'
require 'net/pop'
require 'pop_ssl'

Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE)  

def pull_mail
  Net::POP3.start("pop.gmail.com", 995, "uname","pass") do |pop|  

    if pop.mails.empty?  
      puts 'No mails.'  
    else  
      pop.each_mail do |mail|  
      puts mail_header
    end  
  end

end

Ура!

1 Ответ

1 голос
/ 21 апреля 2010

По сути, вам просто нужно написать свой обработчик электронной почты, и весь анализ будет сделан для вас за кулисами:

class MailHandler < ActionMailer::Base
  def receive(email)
    # here you will have an email object and will be able to call methods like
    # email.subject and email.attachments

    puts "from: #{email.from}, subject: '#{email.subject}'"
  end
end

Когда вы получаете электронные письма, используя Net :: POP3, просто передайте их вашему обработчику:

Net::POP3.start(server, port, username, password) do |pop|
  pop.each_mail { |mail| MailHandler.receive(mail.pop) }
end
...