Как отменить электронную почту в перехватчике deliverying_email? - PullRequest
5 голосов
/ 19 октября 2011

Я внедряю очередь сообщений электронной почты.Я использую перехватчик.

class MyInterceptor
  def self.delivering_email(mail)
    Email.queue(mail)
  end
end

ActionMailer::Base.register_interceptor(MyInterceptor)

Но этот код отправляет электронную почту обычным способом.Как мне остановить отправку электронного письма?Я буду вручную отправлять электронные письма из очереди.

Спасибо.

Сэм

Ответы [ 3 ]

4 голосов
/ 26 июня 2016

Установите Mail::Message#perform_deliveries в false:

class NeverDeliverInterceptor
  def self.delivering_email(message)
    message.perform_deliveries = false
  end
end

ActionMailer::Base.register_interceptor(NeverDeliverInterceptor)

См. API doc для источника и другого использования.

1 голос
/ 20 октября 2011

Я нашел обходной путь. Я просто установил delivery_method для: test.

0 голосов
/ 05 февраля 2014

вероятно, было бы лучше просто установить delivery_method для пользовательского класса агента доставки (см. http://api.rubyonrails.org/v3.2.14/classes/ActionMailer/Base.html).

...