Mandrill + Rails 不是通过控制器发送而是通过控制台发送

Posted

技术标签:

【中文标题】Mandrill + Rails 不是通过控制器发送而是通过控制台发送【英文标题】:Mandrill + Rails not sending via controller but sending via console 【发布时间】:2014-10-08 21:33:01 【问题描述】:

您好,我遇到了一个非常奇怪的问题。我按照文档设置了山魈,现在我无法通过我的控制器发送邮件。甚至设计邮件似乎都不会发送....但我可以通过控制台发送它!

我的邮件配置

  config.action_mailer.default_url_options =  :host => 'smtp.mandrillapp.com' 
  config.action_mailer.perform_deliveries = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = 
    :address   => "smtp.mandrillapp.com",
    :port      => 587,
    :enable_starttls_auto => true,
    :user_name => ENV["MANDRILL_USERNAME"],
    :password  => ENV["MANDRILL_APIKEY"],
    :authentication => 'plain',
    :domain => 'yim.mydomain.org',
  

我的邮件

class YimMailer < ActionMailer::Base
  default from: "notifier@yim.mydomain.org"

  def welcome_email(user, data)
    @user = user
    @data = data
    mail(to: @user.email, subject: 'Welcome!')
  end
end

在我的控制器中:

YimMailer.welcome_email(current_user, dummydata).deliver

当我通过控制台执行同一行时,它会交付。可能是什么问题?

我正在使用 Rails 4

【问题讨论】:

试试set config.action_mailer.raise_delivery_errors = true 可以帮助你调试邮件问题,至少它可以告诉你在发送邮件的过程中是否有错误 我刚试过……什么也没发生。它似乎没有遇到任何问题。日志是干净的,但它仍然没有交付。 我也遇到了同样的问题,你找到解决办法了吗? 【参考方案1】:

我遇到了同样的问题并重新启动了服务器(不小心),它也开始通过控制器工作!

【讨论】:

以上是关于Mandrill + Rails 不是通过控制器发送而是通过控制台发送的主要内容,如果未能解决你的问题,请参考以下文章

通过 Rails 将对象作为变量发送到 Mandrill

在 mandrill 模板中使用 Ruby/rails 变量

使用 Mandrill 和 Rails 的多个收件人

带有 Heroku 的 Rails 不发送 Mandrill 电子邮件

Rails 4 Mailchimp Mandrill 与设计

Rails 4、Devise 和 Mandrill 电子邮件