Errno:: ECONNREFUSED: соединение отклонено - подключитесь (2) к почтовой программе действия
Я долго работал с рельсами. Теперь я сталкиваюсь с небольшой проблемой в ActionMailer. Я хочу отправить электронное письмо, когда пользователь зарегистрируется, чтобы подтвердить его регистрацию.
Я могу отправить электронную почту в режиме разработки, но где не в режиме производства.
исключение Errno:: ECONNREFUSED: соединение отклонено - соединение (2) приходит каждый раз, когда вызывается метод доставлять.
Я написал следующий код.
Моя конфигурация SMTP выглядит:
config.action_mailer.default_url_options = {: host = > " localhost: 3000"}
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
:openssl_verify_mode => OpenSSL::SSL::VERIFY_NONE,
:ssl => true,
:enable_starttls_auto => true, #this is the important stuff!
:address => 'smtp.xxxx.xxx',
:port => xxx,
:domain => 'xxxxxx',
:authentication => :plain,
:user_name => '[email protected]',
:password => 'xxxxxxxxx'
}
В контроллере я написал следующее:
def confirm_registration_in_c
@user = User.find_by_email([email protected])
if @user
UserMailer.confirm_registration(@user).deliver
end
end
В моем user_mailer.rb:
class UserMailer < ActionMailer::Base
default from: "[email protected]"
def confirm_registration(user)
@user = user
@user_name = @user.name
email = @user.email
mail(:to => email, :subject => "Reset your password")
end
end
Я могу отправить электронную почту в режиме разработки на моем локальном хосте, но я не могу отправить электронное сообщение на выделенный сервер.
Кто-нибудь может мне помочь?
Ответы
Ответ 1
В моей ситуации я столкнулся с подобными проблемами, когда пытался создать учебник по электронной почте для отправки по электронной почте, журналы Heroku говорили мне, что
......
Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):
......
После того, как я сравнил свой код с авторским кодом, мне нужно выяснить, что я не настраивал свои конфигурации ActionMailer в файле config/environment/production.rb.
Затем я понял, что у меня только что настроен для отправки электронной почты config/environment/development.rb, но я не сделал этого для моей конфигурации/окружения/производства. гь.
Таким образом, вы можете проверить это, когда поведение вашего приложения отличается между развитием и производством.
Ответ 2
Убедитесь, что вы правильно настроили порт. Я переключился с gmail в разработке (порт 587) на отправку с моего локального сервера на производстве и получал эту ошибку, пока не исправил порт до того, что использует мой сервер (порт 25).
Ответ 3
для производства вы не можете писать
config.action_mailer.default_url_options = { :host => "localhost:3000" }
добавить производственный URL для хоста, например,
config.action_mailer.default_url_options = { :host => "http://www.yourdomain.com" }
Ответ 4
Я просто просмотрел подобную проблему, пытаясь развернуть wordpress с Capistrano.
cap aborted!
Errno::ECONNREFUSED: Connection refused - connect(2) for "{my-ip-address}" port {my-ssh-port}
Я бы тоже получил такую же ошибку:
Tasks: TOP => git:create_release
(See full trace by running task with --trace)
The deploy has failed with an error: #<Errno::ECONNREFUSED: Connection refused - connect(2) for "my-ip-address" port {my-port}>
Оказывается, это была проблема с одновременными сеансами SSH, так как мой сервер запускает Fail2Ban. Чтобы решить это, я просто сделал следующее:
-
Отредактируйте тюрьму, содержащую конфигурации SSH
$ sudo nano /etc/fail2ban/jail.local
-
найдите [SSH] и установите enabled = false
-
затем найдите [ssh-ddos] и установите enabled = false
-
Не забудьте перезапустить Fail2Ban после ваших изменений и open-ssh (если это то, что вы используете)
$ sudo service fail2ban reload
$ sudo /etc/init.d/ssh reload
Стоит отметить, что соединение будет отклонено на разных этапах (задачах) в развертывании. Например, после перезагрузки и быстрого bundle exec cap production deploy:check
все оказалось прекрасным. Затем я попытался развернуть и получить ту же ошибку, но во время выполнения другой задачи. Я также использую UFW, который я отключил и повторно включил без проблем. UFW не была причиной вышеупомянутой проблемы.
У меня была аналогичная проблема после того, как я решил это. Это проблема с разрешениями каталога current
. Это здесь.