我们有一个 Rails 3.2.14 应用程序,它仅在生产中表现不佳。电子邮件无法发送并显示以下错误消息:
ActionView::MissingTemplate (Missing template /invoice with {:locale=>[:en], :formats=>[:text], :handlers=>[:erb, :builder]}. Searched in:
* "/var/www/appname/releases/20131003214241/app/views"
):
app/mailers/mailer.rb:42:in `block in invoice'
app/mailers/mailer.rb:41:in `invoice'
app/controllers/admin_controller.rb:410:in `resend_invoice'
Mailer#invoice 方法如下所示:
def invoice(order, resent=false, receipt_or_invoice = "Receipt")
@order = order
@freebie = @order.freebie?
@mail = true
@transaction = @order.beanstream_transaction
@user = @order.user
recipient = @order.email_receipt_to || @user.email || "support@example.com"
@receipt_or_invoice = receipt_or_invoice
subject = @freebie ? "Your License" : "Your #{receipt_or_invoice.capitalize} and License Information#{ resent ? " (Resent)" : ""}"
mail = mail(:to => [recipient], :subject => subject)
mail.add_part(Mail::Part.new do
content_type 'multipart/alternative'
# THE ODD BIT vv
mail.parts.reverse!.delete_if {|p| add_part p }
end)
mail.content_type 'multipart/mixed'
mail.header['content-type'].parameters[:boundary] = mail.body.boundary
@order.line_items.each do |li|
aq_data = li.license.aquatic_prime_data
if aq_data.present?
attachments[li.license.aquatic_prime_filename] = {content: aq_data, mime_type: 'application/xml'}
end
end
return mail
end
一对夫妇的笔记。
- 这在使用 Pow 的开发中表现良好。生产使用 Apache+Passenger。
- 在此之前,我们对邮件程序所做的最后一次更改是在 6 月添加一个新方法。我们没有看到其他有关未能发送电子邮件的报告。这让我觉得 ActionMailer 或其他 Rails gem 中的某些变化以某种方式导致了这个问题。
- 当从我们的商店控制器或代码的其他部分调用 Mailer.invoice 时也会发生该错误,因此我认为它已本地化为 Mailer。
- 在开发中,我们使用 Google SMTP 服务器发送邮件,而我们在生产中使用 Postmark。
提前感谢您的任何帮助或见解!