我正在我的项目中设置邮件程序,我在通过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 < ActionMailer::Base
default :from => "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 `<top (required)>'
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 `<top (required)>'
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
<- "EHLO CMSAD\r\n"
-> "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"
<- "AUTH NTLM **REMOVED**==\r\n"
-> "334 **REMOVED**\r\n"
<- **REMOVED**\r\n"
-> "235 2.7.0 Authentication successful\r\n"
=> #<Net::SMTP **REMOVED** started=true>
答案 0 :(得分:1)
将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进行身份验证。
config.active_support.deprecation = :notify
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => '<your-email-server>', # mail.example.com
:domain => '<your-domain>', # example.com
:user_name => '<your-username>', # user.name
:password => '<your-unencrypted-password>', # p@ssw0rd
:port => 25,
:authentication => :ntlm
}
最后,请确保您使用您用于反映新Microsoft Exchange帐户的任何电子邮件地址更改默认设置,否则您将收到5.7.1客户端无权发送此发件人错误的权限。< / p>
答案 1 :(得分:0)
这是因为您还没有包含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!
答案 2 :(得分:0)
发现错字,现在正在工作!
<强> development.rb 强>
将:authentification => :ntlm
更改为:authentication => :ntlm
感谢您的支持!