diff options
Diffstat (limited to 'actionmailer/lib')
-rw-r--r-- | actionmailer/lib/action_mailer/base.rb | 23 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/railties/subscriber.rb | 6 |
2 files changed, 22 insertions, 7 deletions
diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 13c9fbd516..91a0007084 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -398,9 +398,10 @@ module ActionMailer #:nodoc: # ... # end # end - def receive(raw_email) - mail = Mail.new(raw_email) - ActiveSupport::Notifications.instrument("action_mailer.receive", :mail => mail) do + def receive(raw_mail) + ActiveSupport::Notifications.instrument("action_mailer.receive") do |payload| + mail = Mail.new(raw_mail) + set_payload_for_mail(payload, mail) new.receive(mail) end end @@ -424,7 +425,20 @@ module ActionMailer #:nodoc: self.view_paths = ActionView::Base.process_view_paths(root) end + def set_payload_for_mail(payload, mail) #:nodoc: + payload[:subject] = mail.subject + payload[:to] = mail.to + payload[:from] = mail.from + payload[:bcc] = mail.bcc + payload[:cc] = mail.cc + payload[:reply_to] = mail.reply_to + payload[:date] = mail.date + payload[:body] = mail.body.encoded + payload[:mail] = mail.encoded + end + private + def matches_dynamic_method?(method_name) #:nodoc: method_name = method_name.to_s /^(create|deliver)_([_a-z]\w*)/.match(method_name) || /^(new)$/.match(method_name) @@ -497,7 +511,8 @@ module ActionMailer #:nodoc: begin ActiveSupport::Notifications.instrument("action_mailer.deliver", - :mail => @mail, :mailer => self) do + :template => template, :mailer_name => mailer_name) do |payload| + self.class.set_payload_for_mail(payload, mail) self.delivery_method.perform_delivery(mail) if perform_deliveries end rescue Exception => e # Net::SMTP errors or sendmail pipe errors diff --git a/actionmailer/lib/action_mailer/railties/subscriber.rb b/actionmailer/lib/action_mailer/railties/subscriber.rb index aafc155b09..af9c477237 100644 --- a/actionmailer/lib/action_mailer/railties/subscriber.rb +++ b/actionmailer/lib/action_mailer/railties/subscriber.rb @@ -2,14 +2,14 @@ module ActionMailer module Railties class Subscriber < Rails::Subscriber def deliver(event) - recipients = Array(event.payload[:mailer].recipients).join(', ') + recipients = Array(event.payload[:to]).join(', ') info("Sent mail to #{recipients} (%1.fms)" % event.duration) - debug("\n#{event.payload[:mail].encoded}") + debug("\n#{event.payload[:mail]}") end def receive(event) info("Received mail (%.1fms)" % event.duration) - debug("\n#{event.payload[:mail].encoded}") + debug("\n#{event.payload[:mail]}") end def logger |