在Rails中发送邮件4.1

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

我有一个名为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 

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

 class UserMailer  "#{user.first_name} ", :subject => 'Welcome to AisisPlatform!') end def password_reset(user) @user = user mail(:to => "#{user.first_name} ", :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  Message-ID:  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 

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-- 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无法找到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