Rails 中 ActionMailer Mandrill 的问题

Posted

技术标签:

【中文标题】Rails 中 ActionMailer Mandrill 的问题【英文标题】:Issue with ActionMailer Mandrill in Rails 【发布时间】:2015-02-16 06:18:25 【问题描述】:

我在 Rails 中创建了一个出租车预订平台。我在生产中使用 Mandrill smtp 设置向我平台的用户发送预订确认邮件。然后我使用以下代码生成了一个名为 user_mailer 的邮件程序:

class UserMailer < ActionMailer::Base
  default :from => "my_company_email"
  def booking_confirmation(user)
    @user = user
    mail(:to => user.email, :subject => "Booking Confirmation")
  end
end

然后我在 user_mailer 视图中创建了 booking_confirmation.html.erb 页面,其中包含一些通用内容。最后,我在我的一个控制器中调用了 user_mailer,如下所示:

UserMailer.booking_confirmation(current_user).deliver

我的问题是,当我想在发送给客户的邮件中包含更多详细信息(例如旅行日期、旅行时间等)时。我正在我的 booking_confirmation.html.erb 页面中尝试此操作:&lt;%= @user.bookings.last.date %&gt; 向客户显示旅行日期。但这不会显示。为什么会这样?

【问题讨论】:

【参考方案1】:

我会像这样通过预订 UserMailer.booking_confirmation(current_user, booking.id).deliver

那么在class UserMailer我会这样做

class UserMailer < ActionMailer::Base
  default :from => "my_company_email"
  def booking_confirmation(user, booking)
    @user = user
    @booking = Booking.find(booking)
    mail(:to => user.email, :subject => "Booking Confirmation")
  end
end

现在在您的 erb 上,您应该可以使用 @booking.date

【讨论】:

【参考方案2】:

这不是山魈问题。应用程序代码有问题。 检查您的以下代码是否包含上次预订的日期值。

@user.bookings.last.date

【讨论】:

以上是关于Rails 中 ActionMailer Mandrill 的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails3 / ActionMailer 中设置 Message-ID 邮件头

Rails ActionMailer嵌套在模块中

Rails ActionMailer 用户邮件发送器 无方法

Rails-如何测试ActionMailer发送了特定附件?

Rails 6 ActionMailer预览和http基本身份验证

带有多个 SMTP 服务器的 Rails ActionMailer