【问题标题】:Sending Mail in Rails 4.1在 Rails 4.1 中发送邮件
【发布时间】:2014-07-05 01:45:28
【问题描述】:

所以我遇到了一个我以前从未见过的有趣错误。我正在尝试在开发中设置邮件,以便我可以向自己发送实际的电子邮件。那么让我们来看看我是如何设置邮件的

我有一个名为setup_mail.rb的初始化程序

ActionMailer::Base.smtp_settings = {
  :address => 'smptp.gmail.com',
  :port => 587,
  :domain => "gmail.com",
  :user_name =>  Figaro.env.EMAIL,
  :password =>  Figaro.env.PASSWORD,
  :authentication => 'plain',
  :enable_starttls_auto => true
}

ActionMailer::Base.default_url_options[:host] =  Figaro.env.HOST

从那里我们在 mailers 目录中有一个名为 user_mailer.rb 的邮件程序类

class UserMailer < ActionMailer::Base
  default from: "AisisPlatForm@AisisPlanner.com"

  def registration_confirmation(user)
    @user = user
    mail(:to => "#{user.first_name} <#{user.email}>", :subject => 'Welcome to AisisPlatform!')
  end

  def password_reset(user)
    @user = user
    mail(:to => "#{user.first_name} <#{user.email}>", :subject => 'Password Reset (AisisPlatform)')
  end
end

对于上述邮件的 HTML 和非 HTML 版本,它都有其适当的视图。然后我们这样做:

UserMailer.registration_confirmation(@user).deliver

在用户create 控制器中发送邮件,但在提交表单并创建用户后,我立即得到:

SocketError (getaddrinfo: nodename nor servname provided, or not known)

所以我想,让我们看看日志(警告它很长):

UserMailer#registration_confirmation: processed outbound mail in 520.0ms

Sent mail to trolololololololo@mmmmmm.com (89.3ms)
Date: Fri, 04 Jul 2014 19:36:17 -0600
From: AisisPlatForm@AisisPlanner.com
To: trolololololololo <trolololololololo@mmmmmm.com>
Message-ID: <53b7569190dcc_957f3fc5b1ce122c939c1@Adams-Mac-mini.local.mail>
Subject: Welcome to AisisPlatform!
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_53b756918f0f4_957f3fc5b1ce122c93864";
 charset=UTF-8
Content-Transfer-Encoding: 7bit


----==_mimepart_53b756918f0f4_957f3fc5b1ce122c93864
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

trolololololololo,

Welcome and thank you for signing up to AisisPlatform.

We believe that our small, simple and yet very powerful API will allow you to create blog you have always wanted to create.
We are constently growing and evolving the feature set and coming out with new ideas and concepts we hope to share with you.

We are more then grateful for your participation in our services and hope we can be of use to you in any way shape or form that will
help make you happy and excited to use and share our services and products.<

sincerly,

AisisPlatform

----==_mimepart_53b756918f0f4_957f3fc5b1ce122c93864
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

<h3>trolololololololo,</h3>

<p>Welcome and thank you for signing up to AisisPlatform.</p>

<p>We believe that our small, simple and yet very powerful API will allow you to create blog you have always wanted to create.
We are constently growing and evolving the feature set and coming out with new ideas and concepts we hope to share with you.</p>

<p>We are more then grateful for your participation in our services and hope we can be of use to you in any way shape or form that will
help make you happy and excited to use and share our services and products.</p>

<p>sincerly,</p>

<p><em>AisisPlatform</em></p>

----==_mimepart_53b756918f0f4_957f3fc5b1ce122c93864--

Completed 500 Internal Server Error in 1048ms

SocketError (getaddrinfo: nodename nor servname provided, or not known):
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:541:in `initialize'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:541:in `open'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:541:in `tcp_socket'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:551:in `block in do_start'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/timeout.rb:91:in `block in timeout'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/timeout.rb:101:in `call'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/timeout.rb:101:in `timeout'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:550:in `do_start'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:520:in `start'
  mail (2.5.4) lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
  mail (2.5.4) lib/mail/message.rb:2129:in `do_delivery'
  mail (2.5.4) lib/mail/message.rb:232:in `block in deliver'
  actionmailer (4.1.0) lib/action_mailer/base.rb:527:in `block in deliver_mail'
  activesupport (4.1.0) lib/active_support/notifications.rb:159:in `block in instrument'
  activesupport (4.1.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.1.0) lib/active_support/notifications.rb:159:in `instrument'
  actionmailer (4.1.0) lib/action_mailer/base.rb:525:in `deliver_mail'
  mail (2.5.4) lib/mail/message.rb:232:in `deliver'
  /Users/Adam/.rvm/gems/ruby-2.1.1/bundler/gems/Xaaron-2ee49cf0018e/app/controllers/xaaron/users_controller.rb:20:in `create'
  actionpack (4.1.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (4.1.0) lib/abstract_controller/base.rb:189:in `process_action'
  actionpack (4.1.0) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (4.1.0) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  activesupport (4.1.0) lib/active_support/callbacks.rb:113:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:113:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
  activesupport (4.1.0) lib/active_support/callbacks.rb:229:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:229:in `block in halting'
  activesupport (4.1.0) lib/active_support/callbacks.rb:229:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:229:in `block in halting'
  activesupport (4.1.0) lib/active_support/callbacks.rb:166:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:166:in `block in halting'
  activesupport (4.1.0) lib/active_support/callbacks.rb:166:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:166:in `block in halting'
  activesupport (4.1.0) lib/active_support/callbacks.rb:166:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:166:in `block in halting'
  activesupport (4.1.0) lib/active_support/callbacks.rb:86:in `call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:86:in `run_callbacks'
  actionpack (4.1.0) lib/abstract_controller/callbacks.rb:19:in `process_action'
  actionpack (4.1.0) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.1.0) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
  activesupport (4.1.0) lib/active_support/notifications.rb:159:in `block in instrument'
  activesupport (4.1.0) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.1.0) lib/active_support/notifications.rb:159:in `instrument'
  actionpack (4.1.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.1.0) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.1.0) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  /Users/Adam/.rvm/gems/ruby-2.1.1/bundler/gems/promiscuous-9bda9a49ac13/gemfiles/lib/promiscuous/railtie.rb:6:in `process_action'
  actionpack (4.1.0) lib/abstract_controller/base.rb:136:in `process'
  actionview (4.1.0) lib/action_view/rendering.rb:30:in `process'
  actionpack (4.1.0) lib/action_controller/metal.rb:195:in `dispatch'
  actionpack (4.1.0) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.1.0) lib/action_controller/metal.rb:231:in `block in action'
  actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:80:in `call'
  actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
  actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:48:in `call'
  actionpack (4.1.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
  actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:in `each'
  actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:in `call'
  actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:676:in `call'
  railties (4.1.0) lib/rails/engine.rb:514:in `call'
  railties (4.1.0) lib/rails/railtie.rb:194:in `public_send'
  railties (4.1.0) lib/rails/railtie.rb:194:in `method_missing'
  actionpack (4.1.0) lib/action_dispatch/journey/router.rb:71:in `block in call'
  actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:in `each'
  actionpack (4.1.0) lib/action_dispatch/journey/router.rb:59:in `call'
  actionpack (4.1.0) lib/action_dispatch/routing/route_set.rb:676:in `call'
  rack (1.5.2) lib/rack/etag.rb:23:in `call'
  rack (1.5.2) lib/rack/conditionalget.rb:35:in `call'
  rack (1.5.2) lib/rack/head.rb:11:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/flash.rb:254:in `call'
  rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/cookies.rb:560:in `call'
  activerecord (4.1.0) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
  activerecord (4.1.0) lib/active_record/migration.rb:380:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.1.0) lib/active_support/callbacks.rb:82:in `run_callbacks'
  actionpack (4.1.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/reloader.rb:73:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.1.0) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.1.0) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.1.0) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.1.0) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.1.0) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.1.0) lib/rails/rack/logger.rb:20:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
  rack (1.5.2) lib/rack/runtime.rb:17:in `call'
  activesupport (4.1.0) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  actionpack (4.1.0) lib/action_dispatch/middleware/static.rb:64:in `call'
  rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
  railties (4.1.0) lib/rails/engine.rb:514:in `call'
  railties (4.1.0) lib/rails/application.rb:144:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  rack (1.5.2) lib/rack/content_length.rb:14:in `call'
  rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
  /Users/Adam/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'


  Rendered /Users/Adam/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.0/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.5ms)
  [1m[36mPromiscuous Recovery Delete (23.8ms)[0m  [1mDELETE FROM _promiscuous WHERE id = 17[0m
  Rendered /Users/Adam/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.0/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (1.0ms)
  Rendered /Users/Adam/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.0ms)
  Rendered /Users/Adam/.rvm/gems/ruby-2.1.1/gems/actionpack-4.1.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (15.3ms)

发生了什么事?为什么我会收到此错误?我关注了Ryan Bates 设置邮件。是不是已经过时了?

【问题讨论】:

    标签: ruby-on-rails ruby email


    【解决方案1】:

    该错误告诉您 Ruby 无法找到 SMTP 服务器的 DNS 条目。

    这是因为您的配置中有错字,它是smtp.gmail.com 而不是smptp.gmail.com。此外,domain 应该是您的域,而不是 gmail.com

    ActionMailer::Base.smtp_settings = {
      :address              => 'smtp.gmail.com',
      :port                 => 587,
      :domain               => 'aisisplanner.com',
      :user_name            => Figaro.env.EMAIL,
      :password             => Figaro.env.PASSWORD,
      :authentication       => 'plain',
      :enable_starttls_auto => true
    }
    

    见:http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration-for-gmail

    【讨论】:

    • 这就像“假电子邮件?”有没有办法抓住它并像“确定我们会把它送到那里......祝你好运”
    • 所以这不起作用,因为当我查看 e.message 时,即使是我自己的个人电子邮件,我也得到了这个:"getaddrinfo: nodename nor servname provided, or not known"
    猜你喜欢
    • 2011-06-10
    • 2017-10-06
    • 2011-10-25
    • 2014-08-26
    • 2011-12-31
    • 2014-01-13
    • 1970-01-01
    • 2011-10-23
    • 2015-03-22
    相关资源
    最近更新 更多