当前位置: 首页 > 知识库问答 >
问题:

Rails/Mailer-发送电子邮件后无方法错误

汝和裕
2023-03-14

我对Rails相当陌生,所以这可能会成为显而易见的事情;然而,我刚刚花了一天的大部分时间来解决这个问题。

我有一个rails应用程序,我已经开发了一段时间,但是我今天才开始实现mailers。我在这里学习了Rails ActionMailer教程:http://guides.rubyonrails.org/v3.0.3/action_mailer_basics.html邮件程序在一个新的示例应用程序中运行良好。然而,当我在现有的rails应用程序(在开发环境中运行)中逐字重复这些步骤时,我收到以下错误。它在数据库中创建条目,正确地发送两个纯文本

我看到的具体错误后,它发送欢迎电子邮件是:

    Completed 500 Internal Server Error in 280ms

NoMethodError (undefined method `error' for true:TrueClass):
  app/controllers/musers_controller.rb:52:in `block in create'
  app/controllers/musers_controller.rb:50:in `create' 

注意,为了不弄乱现有的用户表,我创建了一个临时脚手架

Started POST "/musers" for 127.0.0.1 at 2013-07-10 20:32:34 -0400
Processing by MusersController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"OuoEmsjkAVBHZwqPO5b/O4eKw6iZBaLP6vUT6f9WCOI=", "muser"=>{"name"=>"New User", "email"=>"User@email.com"}, "commit"=>"Create"}
  User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 1]]
   (0.1ms)  begin transaction
  SQL (0.6ms)  INSERT INTO "musers" ("created_at", "email", "name", "updated_at") VALUES (?, ?, ?, ?)  [["created_at", Thu, 11 Jul 2013 00:32:34 UTC +00:00], ["email", "User@email.com"], ["name", "New User"], ["updated_at", Thu, 11 Jul 2013 00:32:34 UTC +00:00]]
   (1.7ms)  commit transaction
  Rendered muser_mailer/registration_confirmation.html.erb (0.1ms)
  Rendered muser_mailer/registration_confirmation.text.erb (0.0ms)
Completed 500 Internal Server Error in 280ms

NoMethodError (undefined method `error' for true:TrueClass):
  app/controllers/musers_controller.rb:52:in `block in create'
  app/controllers/musers_controller.rb:50:in `create'


  Rendered /usr/local/rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.6ms)
  Rendered /usr/local/rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.5ms)
  Rendered /usr/local/rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (15.3ms)

--我应该注意第50行

# POST /musers
  # POST /musers.json
  def create
    @muser = Muser.new(params[:muser])

respond_to do |format|
  if @muser.save
    MuserMailer.registration_confirmation(@muser).deliver
    format.html { redirect_to @muser, notice: 'Muser was successfully created.' }
    format.json { render json: @muser, status: :created, location: @muser }
  else
    format.html { render action: "new" }
    format.json { render json: @muser.errors, status: :unprocessable_entity }
  end
end
  end
class MuserMailer < ActionMailer::Base
   default from: "EmailAddress@Inter.net"

  def registration_confirmation(muser)
    @muser = muser
    mail(:to => muser.email, :subject => "Registered")
  end
end

我认为问题不在于我的smtp、邮件设置或变量,因为它确实会添加到数据库中

由于没有更好的术语,感觉问题在于Rails在发送电子邮件后想要如何路由;好像我需要在我的邮件操作的末尾放一个返回或指定一个路由,告诉服务器返回到控制器操作。换句话说,我迷路了!

下面是我使用的两个邮件视图文件。

<h3><%= @muser.name %>! You sweet sweet fool!</h3>
<p>Thank you for registering!</p>
Thank you for registering!

这是我给缪斯的模型:

class Muser < ActiveRecord::Base
  attr_accessible :email, :name

end

共有1个答案

哈涵容
2023-03-14

我解决了这个问题-在我的配置/环境/development.rb文件中有错误的行config.action_mailer.logger=true导致了这些问题。一旦删除一切工作完美。

 类似资料:
  • 我的: 但是邮件不会发送到该地址,在控制台中,当我单击时,正在打印,但它不会发送任何电子邮件。 我用的是Django 1.3.7和Python 2.6。 不知道是版本的问题还是什么逻辑问题。

  • 我是rails的新手,一直在学习一些关于使用Action Mailer发送电子邮件的教程。我正在使用的应用程序包括添加维修通知单,并在单击按钮时向客户发送电子邮件通知。我可以在创建新的维修单时发送电子邮件,但在尝试通过按钮发送电子邮件时遇到问题。如果您能就此问题提出任何建议,我将不胜感激。 Rails 4.2.0 Ruby 2.1.5 Ubuntu 14.0.4 PostgreSQL 我通过从re

  • 我发现这篇文章使用亚马逊SES与Rails ActionMailer,并遵循https://github.com/abronte/Amazon-SES-Mailer上找到的示例,但我在发送邮件时出现此错误 配置/环境/development.rb: 发送消息: 为什么我在这里有SSL错误?我尝试了另一种配置,使用smtp和个人gmail帐户,它可以发送电子邮件。这是SES的问题吗?我该如何解决这个

  • 我正在尝试使用CodeIgniter的电子邮件库发送电子邮件。这是我写的代码。 错误:这是我得到的错误。 遇到以下SMTP错误:0php_network_getaddresses:getaddrinfo失败:名称或服务未知无法发送数据:AUTH LOGIN发送AUTH LOGIN命令失败。错误:无法发送数据:邮件从:从:遇到以下SMTP错误:无法发送数据:RCPT TO:到:遇到以下SMTP错误:

  • 有人能告诉我使用phpMailer发送带有附件的电子邮件的步骤吗?我已经准备好了发送电子邮件本身的所有代码,它工作正常,但我不明白如何发送附件。我有表单,如果我从POST上的文件输入中获得值,它只会给我文件名而不是完整路径。我认为为了添加附件,我需要获取文件的完整路径,对吗?我不必将文件存储在服务器上,只需通过电子邮件发送即可。

  • 我使用SendInBlue Java Api发送电子邮件,我在scala中编写了以下代码: 但我得到了这个错误:{“代码”:“失败”,“消息”:“需要有效的”至“电子邮件地址”,“数据”:[]}