Rails 3 - abandon senden von E-mail innerhalb von ActionMailer Aktion
Ich Frage mich, wie konnte ich bedingt aufgeben senden von mail innerhalb der Aktion ActionMailer Handlung selbst.
class SomeMailer < ActionMailer::Base
...
def some_emails
some_models = Model.where(:a => 1)
if !some_models.blank?
mail(...)
else
# What to add here?
# render :nothing => true doesn't work
end
end
end
Nun diesen Aufruf durch SomeMailer.some_emails.deliver!
gibt ein
ArgumentError: A sender (Return-Path, Sender or From) required to send a message
- Werden Sie die Zusendung einer E-Mail-für jedes Modell, oder eine E-Mail mit einer Liste von allen Modellen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stattdessen legen Sie Ihre Bedingungen an dem Ort, wo Sie machen den Anruf zu SomeMailer.some_emails.liefern!
Set perform_deliveries false, etwa so:
Diese werden ruhig, nicht versuchen, zu senden und sollte stop Fehler passiert.
In 3.2.9 Schienen Sie kann schließlich bedingt nennen
mail()
. Hier ist der Zusammenhang GitHub thread. Jetzt ist der OP-code können nachbearbeitet werden wie diese:Das merkwürdige ist, dass mit Rails 3.1.rc4 und WEBrick, es funktioniert gut auf meinem lokalen WEBrick webserver. Aber sobald ich push-to Heroku cedar stack, Ihre WEBrick wirft die
Müssen Sie entfernen Sie die bedingten Anweisungen wie bereits in der obigen Antwort. Das behebt es so, dass es funktioniert auch auf Heroku, nicht nur Ihre lokale Maschine
Hatte ich das gleiche problem. Es gibt keinen wirklichen Weg, es zu tun in der ActionMailer Aktion, so habe ich Folgendes in meinem cron-Aufgabe:
Nun, wenn ein Fehler geworfen wird, es bricht nicht die app!