Domanda

I'm coding a newsletter engine in rails 4 for a simple eCommerce system. For that I write this mailer for my engine at \app\mailers\aecs_newsletter\newsletter_mailer.rb:

module AecsNewsletter
    class NewsletterMailer < ::ActionMailer::Base

        default from: 'newsletter@ecommerce.de'

        def send_newsletter_to_subscribers(subscribers, newsletter)
            subscribers.each do |subscriber|
                @email = subscriber.email
                @newsletter = newsletter
                mail(to: @email, subject: newsletter.subject, template_name: 'newsletter')
            end
        end

    end
end

I inherit from ::ActionMailer::Base to get the mailing configuration of the main application. This configurations works well (tested by the confirmation mails of devise).

But when I execute the function send_newsletter_to_subscribers in a controller of my engine, the function end without an error and without sending a mail.

Here is the log of the method call:

Started GET "/newsletters/admin/1/send_newsletter" for x.x.x.x at 2014-01-28 13:19:47 +0100
Processing by AecsNewsletter::Admin::NewslettersController#send_newsletter as HTML
  Parameters: {"id"=>"1"}
  User Load (0.0ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1
   (0.0ms)  begin transaction
  SQL (0.0ms)  UPDATE "users" SET "updated_at" = ? WHERE "users"."id" = 1  [["updated_at", Tue, 28 Jan 2014 12:19:47 UTC +00:00]]
   (203.1ms)  commit transaction
  Userrole Load (0.0ms)  SELECT "userroles".* FROM "userroles" WHERE "userroles"."id" = ? ORDER BY "userroles"."id" ASC LIMIT 1  [["id", 1]]
  AecsNewsletter::Newsletter Load (0.0ms)  SELECT "aecs_newsletter_newsletters".* FROM "aecs_newsletter_newsletters" WHERE "aecs_newsletter_newsletters"."id" = ? LIMIT 1  [["id", "1"]]
  AecsNewsletter::Subscriber Load (0.0ms)  SELECT "aecs_newsletter_subscribers".* FROM "aecs_newsletter_subscribers"
  Rendered /aecs_newsletter/app/views/aecs_newsletter/newsletter_mailer/newsletter.html.erb (0.0ms)
  Rendered /aecs_newsletter/app/views/aecs_newsletter/newsletter_mailer/newsletter.text.erb (0.0ms)
[...]
Redirected to http://x.x.x.x:3000/newsletters/admin/1
Completed 302 Found in 547ms (ActiveRecord: 375.0ms)

So the function renders the views, but no mail was sent. I think, that I don't have inherit the mailing configuration right. But in which way I cound use the main app mailer configuration?

Has anyone a solution for my problem? Thanks!

È stato utile?

Soluzione

You have not asked it to be delivered. Add .deliver

module AecsNewsletter
    class NewsletterMailer < ::ActionMailer::Base

        default from: 'newsletter@ecommerce.de'

        def send_newsletter_to_subscribers(subscribers, newsletter)
            subscribers.each do |subscriber|
                @email = subscriber.email
                @newsletter = newsletter
                mail(to: @email, subject: newsletter.subject, template_name: 'newsletter').deliver
            end
        end

    end
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top