Přenášet data do Mailer démona v Rails?

hlasů
0

Podle API Rails (úryvku níže), optimální způsob, jak přijímat e-maily, je vytvoření jedné instance Rails v démona, který se dovolává MTA, když přijde nová pošta.

Moje otázka zní: jak si předávat data do tohoto démona při příchodu nové pošty?

========================

Rails API fragmentů

To receive emails, you need to implement a public instance method called receive that takes a tmail object as its single parameter. The Action Mailer framework has a corresponding class method, which is also called receive, that accepts a raw, unprocessed email as a string, which it then turns into the tmail object and calls the receive instance method.

Example:

  class Mailman < ActionMailer::Base
    def receive(email)
      page = Page.find_by_address(email.to.first)
      page.emails.create(
        :subject => email.subject, :body => email.body
      )

      if email.has_attachments?
        for attachment in email.attachments
          page.attachments.create({
            :file => attachment, :description => email.subject
          })
        end
      end
    end
  end

This Mailman can be the target for Postfix or other MTAs. In Rails, you would use the runner in the trivial case like this:

  ./script/runner 'Mailman.receive(STDIN.read)'

However, invoking Rails in the runner for each mail to be received is very resource intensive. A single instance of Rails should be run within a daemon if it is going to be utilized to process more than just a limited number of email. 
Položena 27/08/2009 v 00:31
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

V příkladu, které poskytnete, není tam žádný démon běží ke zpracování e-mailu. Dokumentace říká, můžete nastavit váš mailový klient démon, Postfix v tomto případě vyvolat příkaz při příjmu pošty. Voláte-li příkaz z vaší poštovní schránky:

RAILS_ROOT / script / runner 'Mailman.receive (STDIN.read)'

Obsah e-mailu je předán do metody příjmu. Mnohem lepší způsob, jak zvládnout zpracování příchozích e-mailů je vytvořit skutečnou poštovní schránky, který přijímá e-maily. Pak můžete napsat skript, Ruby, která šarže kontroluje schránku pro zpracování e-mailu. Můžete volat, že skript přes cron se zámkem běh kolem něj, aby se ujistili, že je tam jen jeden způsob provedení tohoto úkolu.

Odpovězeno 18/01/2010 v 19:05
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more