Ruby / Rails ActionMailer不使用NTLM

我正在我的项目中设置邮件程序,我在通过Exchange SMTP服务器发送邮件时遇到困难。

我已经安装了gem ruby-ntlm但我仍然unrecognized authentication type

这是我的代码

的environment.rb

 # Load the Rails application. require File.expand_path('../application', __FILE__) require 'ntlm/smtp' # Initialize the Rails application. Rails.application.initialize! 

notifier.rb

 class Notifier  "stephen.edwards@foostix.lu" def test mail(:to => "stephen.edwards@foostix.lu", :subject => "Test subject").deliver end end 

development.rb

  config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "**REMOVED**", :port => 587, :domain => "CMSAD", :user_name => "**REMOVED**", :password => "**REMOVED**", :authentification => :ntlm, :enable_starttls_auto => false } 

Rails控制台测试

 Notifier#test: processed outbound mail in 5591.8ms Net::SMTPAuthenticationError: 504 5.7.4 Unrecognized authentication type from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:968:in `check_auth_response' from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:739:in `auth_plain' from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:731:in `authenticate' from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:566:in `do_start' from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:519:in `start' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/message.rb:2141:in `do_delivery' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/message.rb:236:in `block in deliver' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/actionmailer-4.1.8/lib/action_mailer/base.rb:527:in `block in deliver_mail' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/notifications.rb:159:in `block in instrument' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/notifications/instrumenter.rb:20:in `instrument' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/notifications.rb:159:in `instrument' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/actionmailer-4.1.8/lib/action_mailer/base.rb:525:in `deliver_mail' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/message.rb:236:in `deliver' from /media/development/Foostix-web/app/mailers/notifier.rb:5:in `test' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/actionpack-4.1.8/lib/abstract_controller/base.rb:189:in `process_action' ... 15 levels... from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands/console.rb:9:in `start' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:69:in `console' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:40:in `run_command!' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands.rb:17:in `' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require' from /media/development/Foostix-web/bin/rails:8:in `' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `block in load' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency' from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load' from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require' 

然而这有效….

 smtp = Net::SMTP.new('**REMOVED**', 587) smtp.debug_output = $stdout smtp.enable_starttls_auto#skip if not needed smtp.start("CMSAD", "**REMOVED**", "**REMOVED**", :ntlm) TLS connection started  "250-**REMOVED** Hello [**REMOVED**]\r\n" -> "250-SIZE 104857600\r\n" -> "250-PIPELINING\r\n" -> "250-DSN\r\n" -> "250-ENHANCEDSTATUSCODES\r\n" -> "250-AUTH GSSAPI NTLM LOGIN\r\n" -> "250-8BITMIME\r\n" -> "250-BINARYMIME\r\n" -> "250 CHUNKING\r\n"  "334 **REMOVED**\r\n"  "235 2.7.0 Authentication successful\r\n" => # 

ruby-ntlm gem添加到Gemfile并运行bundle install

的Gemfile:

  gem 'ruby-ntlm' 

bundle install

将NTLM SMTP库添加到config/environment.rb文件中。

 # Load the rails application require File.expand_path('../application', __FILE__) require 'ntlm/smtp' # Initialize the rails application RailsApp::Application.initialize! 

设置环境文件以使用NTLM进行身份validation。

 config.active_support.deprecation = :notify config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => '', # mail.example.com :domain => '', # example.com :user_name => '', # user.name :password => '', # p@ssw0rd :port => 25, :authentication => :ntlm } 

最后,请确保从您使用的任何电子邮件地址更改默认值以反映新的Microsoft Exchange帐户,否则您将收到5.7.1客户端无权发送此发件人错误的权限。

这是因为您没有包含ntlm库。

将NTLM SMTP库添加到config/environment.rb文件中

 # Load the Rails application. require File.expand_path('../application', __FILE__) require 'ntlm/smtp' # ADD THIS LINE HERE # Initialize the Rails application. Rails.application.initialize! 

发现一个错字,现在正在工作!

development.rb

更改:authentification => :ntlm to :authentication => :ntlm

不管怎样,谢谢你的支持!