Хорошо, это оказалось проще, чем я думал, используя плагин Fetcher, который вы можете найти на Github. Для тех, кто заинтересован в подходе, который работает, вот что я сделал:
1) Установите плагин Fetcher следующим образом: скрипт / плагин установите git: //github.com/look/fetcher.git
2) Инструкции предлагают вам запустить генератор для создания демона, например: script / generate fetcher_daemon MailerDaemon. Я предлагаю сделать это, поскольку он сгенерирует YML-файл в config /, который вы можете изменить с помощью информации вашего почтового сервера (в моем случае Gmail).
Также генерирует демон для запуска сборщика. Я пытался использовать это, но постоянно получал следующую ошибку: Mysql :: Ошибка: сервер MySQL пропал: ПОКАЗАТЬ ПОЛЯ ОТ email_blacklists
. Это было результатом исчезновения процесса демона до того, как MySQL смог сохранить запись, поэтому я отказался от использования демона и вместо этого установил cron.
3) настройте файл .yml в конфигурации, который я переименовал в mail.yml, с вашими настройками почты. Для Gmail Pop они выглядят примерно так:
development:
type: pop
server: pop.gmail.com
port: 995
ssl: true
username: myemailaddress@gmail.com
password: mypassword
Вот код, который вам нужно обработать:
модель / mail_processor.rb
class MailProcessor < ActionMailer::Base
def receive(email)
email = EmailBlacklist.find_or_create_by_email(email.to.first)
end
def self.grab_bounces
config = YAML.load_file("#{RAILS_ROOT}/config/mail.yml")
config = config[RAILS_ENV].to_options
fetcher = Fetcher.create({:receiver => MailProcessor}.merge(config))
fetcher.fetch
end
end
Библиотека / задачи / mail.rake
namespace :email do
desc "sends various types of marketing and automated emails and processes bouncebacks"
task(:process_bounces => :environment) do
MailProcessor.grab_bounces
end
end
Затем вы можете выбросить автоматически созданный файл mailer_daemon_fetcher.rb в вашу директорию scripts /.
Надеюсь, это поможет кому-то еще. Если вы хотите выполнить тестирование, то из консоли просто вызовите MailProcessor.grab_bounces. Убедитесь, что в папке «Входящие» есть электронная почта, к которой вы настроены.