【问题标题】:ActionMailer sending emails with empty bodyActionMailer 发送带有空正文的电子邮件
【发布时间】:2012-08-24 15:53:08
【问题描述】:

似乎在我将 rails 升级到 3.2.8 的时候,在我创建和发送电子邮件时没有设置正文。这次邮件程序周围的代码没有更改,除了 ActionMailer 也升级到 3.2.8。

我在app/mailers中有beta_request_mailer.rb,方法如下:

def beta_request(request)
  mail(
    :to => "#{request[:name]} <#{request[:email]}>",
    :subject => 'Thanks for requesting an invite to xxxxx!'
  )
end

我还有一个运行良好的正文文件:app/views/beta_request_mailer/beta_request_email.html.erb

电子邮件发送良好,只是没有任何正文。在控制台中运行,在 beta_request 中创建的邮件对象在运行mail.body 时没有正文。如果我手动设置正文,则会发送出去。

发生了哪些我不知道的变化?

【问题讨论】:

    标签: ruby-on-rails-3 email actionmailer


    【解决方案1】:

    我也收到了邮件,邮件内容正常,主题正确,但邮件中没有内容,并发现使用 .deliver!而不仅仅是 .deliver 方法解决了问题(虽然不知道为什么)

    【讨论】:

    • 需要注意的是deliver!(相对于deliver)会跳过像电子邮件interceptors这样的回调,因此应该谨慎使用。
    【解决方案2】:

    通过从文件名中删除 _email 来修复

    【讨论】:

    • +1 这对我来说很明显,但我必须确保我的#action 与我的视图同名
    【解决方案3】:

    我的解决方案非常有趣。

    1. 首先,我的 Rails 4 应用程序在没有邮件程序布局文件的情况下抛出错误。

    2. 我创建了空白布局文件mailer.html.slim。这导致邮件已送达但没有内容。

    3. 解决方案是在mailer.html.slim 中添加==yield

    像魅力一样工作。希望这是您的问题,并且对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2014-12-31
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多