从Rails发送邮件在控制台工作但不在我的应用程序中...?

时间:2011-03-09 22:45:41

标签: ruby-on-rails email

我有一个非常简单的Rails应用程序,我想在创建工作请求时发送电子邮件。我是Rails的新手,所以我找到了一些关于如何在线完成的细节。设置邮件程序,配置它等。设置我的模板。细

在我的work_requests_controller.rb中,我有:

  def create
    @work_request = WorkRequest.new(params[:work_request])

    respond_to do |format|
      if @work_request.save
        # Tell the mailer to send a welcome Email after save
        PersonMailer.work_request_init_email(@work_request).deliver

        format.html... etc.

知道邮件是有效的,因为如果我去Rails控制台,创建WorkRequest对象,并使用完全相同的行(PersonMailer.work ...),它发送邮件就好了。但是当我在我的应用程序中创建工作请求时,没有收到任何邮件,浏览器或logs / development.log中没有显示错误。

在服务器输出中,我看到HTML版本已呈现,我看到有关电子邮件的信息,它看起来都很笨拙。由于我没有错误,我不知道如何继续。

2 个答案:

答案 0 :(得分:2)

好吧,我是正式的白痴。 : - )

处理其他问题时,我正在编辑application.rb。我想我需要重新启动服务器才能看到这些变化。突然,电子邮件在应用内部发挥作用。

D'哦!我没有意识到(菜鸟错误)我需要重新启动应用程序的服务器以查看我昨天在environment.rb中放置的电子邮件配置。我从来没有尝试过那种原因。

我现在看到,只有在服务器启动时才运行其他组件。所以,当然,当我启动控制台时,它会运行所有初始化程序,因此电子邮件配置可见,并且电子邮件已发送。

所以答案是,重启你的服务器,愚蠢。好吧,无论如何,至少它现在正在工作......我会把它带到我能得到的地方!

答案 1 :(得分:0)

我首先将您的电子邮件命令移动到WorkRequest模型作为'after_create'操作

after_create :send_init_email


def send_init_email
  PersonMailer.deliver_work_request_init_email(self)
end

查看是否有效,或者aleast为您提供更好的错误信息。