Вход анонимного пользователя с помощью ActionMailer и Rails 3

Я видел видео RailsCasts о настройке ActionMailer для Rails 3. Однако у меня возникла ситуация, когда почтовый сервер (Lotus Notes), который мне нужно использовать, требует анонимного входа (где я не ввожу имя пользователя или пароль). Ниже я настроил файл инициализатора, контроллер и информацию о почтовой программе. Я не получаю никаких ошибок, когда отправляю электронное письмо, и я вижу, что электронное письмо создается и «отправляется» с терминала; однако письмо не доставляется. Что я делаю неправильно?

Файл инициализатора:

ActionMailer::Base.smtp_settings = {
   :address              => "smtp.home22.com",
   :port                 => 25,
   :domain               => "home22.com",
   :enable_starttls_auto => true  
}

ActionMailer::Base.default_url_options[:host] = "localhost:3000"

Контроллер:

 def send_alert()
    @assessment = Assessment.first
    AlertMailer.alert_notice(@assessment).deliver 
     respond_to do |format|
        format.html {redirect_to :action => 'index'}
       # format.html { render :action => (assessments_url) }
        format.xml  { head :ok }
      end
  end

Почтовая программа:

class AlertMailer < ActionMailer::Base
  default  :from => "Rails Application"
  def alert_notice(assessment)
    attachments["alert.csv"] = File.read("#{Rails.root}/public/alert.csv")
    mail(:to => '[email protected]', :subject => 'Alert')
  end
end

person user437969    schedule 24.09.2011    source источник
comment
может глупый вопрос, но ты перезапускал сервер?   -  person rik.vanmechelen    schedule 25.09.2011


Ответы (2)


Здесь недостаточно информации, чтобы понять, что происходит на самом деле. Вы должны проверить, что было записано в файле log.nsf на сервере Domino, и если это не даст вам достаточно информации, перед вами пара технических замечаний IBM ( https://www-304.ibm.com/support/docview.wss?uid=swg27003007 https://www-304.ibm.com/support/docview.wss?uid=swg21095102 ), которые помогут вам настроить сбор отладочных данных, которые помогут вам продвинуться дальше.

person Richard Schwartz    schedule 25.09.2011

Я нашел решение, но не совсем понимаю, почему оно работает, но у меня есть предположение.

Когда вы устанавливаете хэш smtp_settings, вы заменяете существующие значения по умолчанию. Это означает, что любые параметры по умолчанию, которые вы не включили, просто не существуют в хэше. Если хэш объявлен без объекта или блока по умолчанию, он должен возвращать nil, когда кто-либо пытается получить доступ к отсутствующему ключу (как Документы для хэшей указать).

Вы не устанавливаете параметр :authentication, поэтому по умолчанию он должен быть равен nil, что вам и нужно. Но, очевидно, это не работает, поэтому он не полагается на значение по умолчанию для этого хэша (или объединяет его с другим хешем с предустановленным значением по умолчанию).

Эта часть является догадкой: где-то код почтовой программы проверяет наличие ключа, а не значение, на которое он ссылается. Обнаружив, что он отсутствует, он использует что-то другое по умолчанию.

Независимо от того, является ли это причиной, когда у меня была та же проблема, я специально включил :authentication => nil в хэш smtp_settings, который решил проблему.

person Dylan Lacey    schedule 15.12.2011