Обработка почтовых отказов в Rails - PullRequest
2 голосов
/ 15 мая 2010

Я построил очень простую систему CRM для своего приложения rails, которая позволяет мне отправлять еженедельные дайджесты активности пользователей с пользовательским текстом и создавать маркетинговые сообщения, состоящие из нескольких частей, которые я могу настраивать и отправлять через базовый интерфейс администратора. Я доволен тем, что я собрал на стороне отправления (за исключением того факта, что я не пытался провести объемное тестирование его возможностей), но я обеспокоен тем, как справиться с отскоком.

Я наткнулся на этот плагин со связанными скриптами: http://github.com/kovyrin/bounces-handler

Я использую Службы Google для обработки своей почты и действительно не знаю достаточно о Perl, чтобы захотеть возиться с вышеуказанным плагином - у меня достаточно головной боли.

Я ищу простое решение для обработки отказов в Rails. Вся моя электронная почта будет отправляться с адреса, подобного этому, который будет управляться в Службах Google: "news@mydomain.com."

Какой лучший рабочий процесс для этого? Может кто-нибудь опубликовать пример решения, которое они используют, учитывая тот факт, что я использую Google Apps для почты?

Будем весьма благодарны за любые рекомендации, ссылки или рекомендации по основным рабочим процессам.

Спасибо! -

1 Ответ

2 голосов
/ 16 мая 2010

Хорошо, это оказалось проще, чем я думал, используя плагин 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. Убедитесь, что в папке «Входящие» есть электронная почта, к которой вы настроены.

...