Не удается заставить ActionMailer работать с MS Exchange через SMTP - PullRequest
7 голосов
/ 29 июня 2011

Вот моя простая тестовая программа (с использованием ActionMailer 3.0.8, Ruby 1.9.2p180 Mac OS X):

require 'rubygems'
require 'action_mailer'

ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
    :address => "my_exchange_server",
    :port => 25,
    :domain => 'my_domain.org',
    :authentication => :login,
    :user_name => 'my_user',
    :password => 'my_password',
    :enable_starttls_auto => false
}

ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.default :from => 'from_email@my_company.com'

m = ActionMailer::Base.mail :to => 'to_email@my_company.com', :subject => 'this is a test', :body => 'this is a test'
m.deliver

При проверке различных типов аутентификации я получаю следующие ошибки:

:обычная ошибка:

smtp.rb:966:in `check_auth_response': 504 5.7.4 Unrecognized authentication type. (Net::SMTPAuthenticationError)

: ошибка входа:

smtp.rb:972:in `check_auth_continue': 504 5.7.4 Unrecognized authentication type. (Net::SMTPSyntaxError)

: ошибка cram_md5:

smtp.rb:972:in `check_auth_continue': 504 5.7.4 Unrecognized authentication type. (Net::SMTPSyntaxError)

Нет ошибки аутентификации:

protocol.rb:135:in `read_nonblock': end of file reached (EOFError)

Есть идеи?

Ответы [ 3 ]

12 голосов
/ 20 сентября 2012

Проверьте, какие схемы аутентификации включены

Это может быть: нет, обычный, логин, cram_md5, NTLM, StartTLS

  • Использование Telnet для подключения к почтовым ящикам Exchange 2003 POP3 и использование SMTP для отправки электронной почты в целях устранения неполадок
    • http://www.msexchange.org/tutorials/telnet-exchange2003-pop3-smtp-troubleshooting.html
      • Прокрутите вниз до: Подключение к SMTP
      • Что вернул EHLO ?
        • "250-AUTH LOGIN" или "250-AUTH=LOGIN" означают, что вам необходимо пройти аутентификацию.
        • "250-AUTH" (больше ничего не следует в этой строке!), Похоже, указывает на то, что вы НЕ должны аутентифицировать себя ! В противном случае вы получите ошибку:
          • "504 5.7.4 Нераспознанный тип аутентификации"

Как правильно получить доступ к Exchange

Хорошие ресурсы, которые должны помочь вам понять и устранить неполадки.

Как вы могли бы изменить Exchange, чтобы решить проблему

(вместо изменения способа доступа к Exchange)

Redmine специфичный

Полезно для Ruby on Rails

5 голосов
/ 08 сентября 2011

были похожие проблемы с сетью. используйте приведенный ниже код в irb, чтобы получить отладочную информацию прямо в консоли.

require 'net/smtp'
smtp = Net::SMTP.new('ip_or_dns_address', port)
smtp.debug_output = $stdout
smtp.enable_starttls_auto#skip if not needed
smtp.start("domain", "user", "password", auth_type)

так и не выяснил, в чем проблема. они переместили сервер обмена, и рабочий сервер прекратил отправлять электронные письма. Я не совсем айтишник, но были разные журналы отладки в зависимости от того, в какой части сети я был. наконец-то "решил" проблему, отправив письмо, не прошедшее проверку подлинности ...

1 голос
/ 25 ноября 2011

Вы можете подключиться к SMTP-серверу и запросить поддерживаемые методы аутентификации:

telnet smtp.server.net 25
EHLO

Сервер должен ответить хотя бы одной строкой, начинающейся с 250-AUTH. После этого перечислены поддерживаемые методы аутентификации. Скорее всего, сервер Exchange поддерживает аутентификацию только через GSSAPI или NTLM. В последнем случае вы могли бы заставить его работать с гемом ruby-ntlm и методом аутентификации ntlm. (См. http://www.breckenedge.com/configuration-of-ruby-on-rails-actionmailer-for-microsoft-exchange-smtp)

...