Как настроить отправку электронной почты через сервер приложений 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/.
Из документов:
Как
- gem install mailcatcher
- mailcatcher
- Идти к
http://localhost:1080/
- Отправить почту через
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-сервера или проверки подлинности
Если вы тестируете функциональность электронной почты с 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)". У вас есть доступ к журналу почтового сервера на локальном хосте? Я думаю, что вы должны искать там подсказку о том, как решить эту проблему.