我通过追踪和错误注意到了
UserMailer.newsletter(@user, @posts).deliver unless @posts.blank?
无论@ post有什么价值,都会发送电子邮件,而
UserMailer.newsletter(@user, @posts).deliver! unless @posts.blank?
如果@posts为空,(使用deliver!vs deliver)将正确无法发送电子邮件?
这是为什么?我知道送货!如果无法发送,则抛出异常,但不应该发送也听取条件?
答案 0 :(得分:4)
使用source_location
查找定义方法的位置:
UserMailer.newsletter(@user, @posts).method(:deliver).source_location
=> ["gems/mail-2.5.4/lib/mail/message.rb", 229]
这会指向these lines in the mail gem,并为您提供答案:
deliver!
绕过检查perform_deliveries和raise_delivery_errors。