Как настроить отправку электронной почты через сервер приложений 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

person Mellon    schedule 15.03.2011    source источник


Ответы (7)


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

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

Вы должны иметь это в своих файлах config/environments/*.rb.

person HakonB    schedule 15.03.2011
comment
Нет.. у меня не работает, у меня Отказано в соединении - ошибка подключения(2) - person Mellon; 15.03.2011
comment
Привет, я поместил его в config/enviroments/development.rb, но получил ту же ошибку из консоли. Отказано в подключении - connect(2) :( - person Mellon; 16.03.2011

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

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

Как

  1. гем установить mailcatcher
  2. почтальон
  3. Go to http://localhost:1080/
  4. Отправить почту через smtp://localhost:1025

Рельсы

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

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

person Alexander    schedule 15.09.2014
comment
Мне очень нравится Mailcatcher для тестирования разработки. Но на самом деле вопрос заключается в использовании локального MTA (агента передачи почты) для отправки почты, а не в использовании SMTP. Все, что делает Mailcatcher, — это настраивает простой SMTP только для локальной отладки; он не будет действовать как MTA для отправки электронной почты в пункт назначения, отличный от localhost. - person Giacomo1968; 10.12.2014

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

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

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

person RQ Bukhari    schedule 03.03.2012
comment
это «sudo apt-get install sendmail» - person Navin; 05.09.2013

Добавьте гем 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: введите здесь описание изображения

person changingrainbows    schedule 19.11.2015

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

Вот мой конфиг (..\config\environments\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`

person John Smith    schedule 11.01.2016
comment
Спасибо, Джон, я проголосовал на случай, если у кого-то возникнет такая же проблема. Это решило это для меня. (Рельсы 3) - person James; 19.04.2016

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

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

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

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

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

person Stefan Pettersson    schedule 15.03.2011
comment
@Mellon, извините, я не понял, какой журнал я имел в виду. Я думал о журнале почтового сервера (/var/log/maillog или что-то подобное, в зависимости от того, что вы используете). Я потратил часы на устранение ошибок в моем приложении rails при отправке электронной почты, просто чтобы обнаружить, что почтовый сервер отклонил его. - person Stefan Pettersson; 17.03.2011
comment
config.action_mailer.default_url_options = { :host =› 'localhost:3000' } config.action_mailer.raise_delivery_errors = false config.action_mailer.delivery_method = :smtp config.action_mailer.perform_deliveries = true - person prasad.surase; 06.09.2012

Что ж, вы можете:

sudo apt-get install sendmail

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

ActionMailer::Base.delivery_method = :sendmail

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

person Helio Santos    schedule 17.07.2013