Как настроить отправку электронной почты через сервер приложений localhost без аутентификации?

Я настроил почтовую программу Rails в config/initializers/ вроде следующего:

/config/initializers/setup_email.rb

config.action_mailer.raise_delivery_errors = true

  ActionMailer::Base.smtp_settings = {
   :address => "smtp.gmail.com",
   :port => 587,
   :domain => 'gmail.com',
   :authentication => :plain,
   :user_name=><username>,
   :password=><password>,
   :enable_starttls_auto => true
}

он работает нормально, я могу отправлять электронные письма и получать их.

Но как настроить его для отправки электронной почты с локального узла без аутентификации (без имени пользователя и пароля), то есть не использовать gmail, а отправлять электронную почту через локальный сервер приложения, как настроить тогда?

--EDIT --- При использовании localhost выдается следующее сообщение об ошибке:

Connection refused - connect(2)
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/net/smtp.rb:551:in `initialize'
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/net/smtp.rb:551:in `open'
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/timeout.rb:67:in `timeout'
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/timeout.rb:101:in `timeout'
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/net/smtp.rb:525:in `start'
/home/user1/.rvm/gems/ruby-1.8.7-p330@myapp/gems/mail-2.2.15/lib/mail/network/delivery_methods/smtp.rb:127:in `deliver!'
/home/user1/.rvm/gems/ruby-1.8.7-p330@myapp/gems/mail-2.2.15/lib/mail/message.rb:1967:in `do_delivery'
/home/user1/.rvm/gems/ruby-1.8.7-p330@myapp/gems/mail-2.2.15/lib/mail/message.rb:228:in `deliver'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionmailer-3.0.3/lib/action_mailer/base.rb:401:in `deliver_mail'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/activesupport-3.0.3/lib/active_support/messages.rb:52:in `instrument'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/activesupport-3.0.3/lib/active_support/messages/instrumenter.rb:21:in `instrument'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/activesupport-3.0.3/lib/active_support/messages.rb:52:in `instrument'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionmailer-3.0.3/lib/action_mailer/base.rb:399:in `deliver_mail'
/home/user1/.rvm/gems/ruby-1.8.7-p330@myapp/gems/mail-2.2.15/lib/mail/message.rb:228:in `deliver'
/home/user1/myapp/app/mailers/my_mailer.rb:9:in `new_car_messages'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:151:in `send_action'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:151:in `process_action'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:120:in `process'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionpack-3.0.3/lib/abstract_controller/rendering.rb:40:in `process'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionmailer-3.0.3/lib/action_mailer/old_api.rb:75:in `process'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionmailer-3.0.3/lib/action_mailer/base.rb:446:in `process'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionmailer-3.0.3/lib/action_mailer/base.rb:441:in `initialize'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionmailer-3.0.3/lib/action_mailer/base.rb:425:in `new'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/actionmailer-3.0.3/lib/action_mailer/base.rb:425:in `method_missing'
/home/user1/myapp/config/../lib/my/new_car_sender.rb:7:in `send_email'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/activerecord-3.0.3/lib/active_record/relation.rb:13:in `each'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/activerecord-3.0.3/lib/active_record/relation.rb:13:in `__send__'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/activerecord-3.0.3/lib/active_record/relation.rb:13:in `each'
/home/user1/myapp/config/../lib/my/new_car_sender.rb:6:in `send_email'
/home/user1/myapp/lib/tasks/new_car_messages.rake:8
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/home/user1/.rvm/rubies/ruby-1.8.7-p330/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/gems/rake-0.8.7/bin/rake:31
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/bin/rake:19:in `load'
/home/user1/.rvm/gems/ruby-1.8.7-p330@global/bin/rake:19

7 ответов

Если вы настроили локальный SMTP-сервер, вам нужно просто предоставить данные для подключения:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
    :address              => "localhost",
    :port                 => 25
}

Это должно быть в ваших файлах config/ сред / /. Rb.

Чтобы отправлять электронные письма, вам нужно настроить SMTP-сервер. Его можно настроить локально или использовать удаленный сервис, такой как Gmail, SendGrid или Mandrill. В вашем случае я бы предложил использовать http://mailcatcher.me/.

Из документов:

Как

  1. gem install mailcatcher
  2. mailcatcher
  3. Идти к http://localhost:1080/
  4. Отправить почту через smtp://localhost:1025

Рельсы

Чтобы настроить приложение rails, я рекомендую добавить его в ваш файл environment /development.rb:

config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }

Добавить letter_opener драгоценный камень к development драгоценная группа в Gemfile,

Добавьте эти строки в development.rb:

config.action_mailer.delivery_method = :letter_opener
config.action_mailer.default_url_options = { host: "localhost, port: 3000" }

и вы должны увидеть всплывающие сообщения электронной почты, всплывающие в вашем браузере без запуска STMP-сервера или проверки подлинности

Электронная почта в Chrome:

Если вы тестируете функциональность электронной почты с localhost, то сначала выясните, установлен ли и работает ли sendmail, если нет, то запустите эту команду в терминале:

sudo apt-get установить sendmail

после установки попробуйте отправить письмо.. потому что конфигурация выглядит нормально..

Добавление опции 'enable_starttls_auto: false' решило проблему для меня.

Вот мой конфиг (..\config\environment \development.rb):

config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address:  'localhost',
  port:     25,
  domain:   'exmaple.com',
      enable_starttls_auto: false
}

ruby 2.2.3p173 (2015-08-18 revision 51636) [x64-mingw32]
Rails 4.2.5`

Ну, вы можете:

sudo apt-get install sendmail

и затем измените конфигурацию так:

ActionMailer::Base.delivery_method = :sendmail

Наконец, вы обнаружите, что большинство почтовых служб блокируют ваш хост (политика, позволяющая избежать спама).

И даже короче: нет записи вообще. И localhost, и номер порта являются значениями по умолчанию.

Моя текущая конфигурация в config/development.rb:

#config.action_mailer.default_url_options = { :host => 'localhost' }

Я держал это в комментариях, чтобы помнить, где измениться, когда я играю с удаленным хостом SMTP.

РЕДАКТИРОВАТЬ (так как у меня недостаточно репутации, чтобы комментировать правильный пост): Я видел ваш комментарий к посту @HakonB, который вы получили "Соединение отказано - подключиться (2)". У вас есть доступ к журналу почтового сервера на локальном хосте? Я думаю, что вы должны искать там подсказку о том, как решить эту проблему.

Другие вопросы по тегам