Errno::ECONNREFUSED: Connexion refusée - connect(2) pour l'action mailer

je travaille avec les rails depuis longtemps. Maintenant, je suis confronté à un petit problème dans L'ActionMailer. Je veux envoyer un e-mail lorsque l'utilisateur est enregistré, pour confirmer son inscription. Je suis en mesure d'envoyer un e-mail dans le mode de développement mais où comme pas dans le mode de production.

l'exception Errno::ECONNREFUSED: Connexion refusée - connect(2) est à venir à chaque fois quand deliver méthode est appelé.

J'ai écrit le code suivant.

Ma configuration SMTP ressemble à:

config.action_mailer.default_url_options = { :accueil => "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      => 'xxxxxxx@xxx.xxx',
    :password       => 'xxxxxxxxx'
  }

dans le contrôleur, j'ai écrit ce qui suit:

def confirm_registration_in_c       
 @user = User.find_by_email(asdf123@gmail.com)
 if @user
      UserMailer.confirm_registration(@user).deliver            
 end
end

dans mon user_mailer.rb:

class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  def confirm_registration(user)
   @user = user
   @user_name = @user.name       
   email = @user.email 
   mail(:to => email, :subject => "Reset your password")
  end
end

je suis en mesure d'envoyer un e-mail en mode développement sur mon hôte local, mais je ne suis pas en mesure d'envoyer l'e-mail sur le serveur dédié.

Quelqu'un peut-il m'aider s'il vous plaît?

34
demandé sur VenkatK 2013-06-17 09:39:43

6 réponses

dans ma situation, j'ai rencontré des problèmes similaires lorsque j'ai essayé de faire à travers un tutoriel d'application D'envoi-e-mail Rails, les journaux Heroku n'arrêtaient pas de me dire que

......

Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):

......

après avoir comparé mon code avec le code d'auteur, j'ai découvert que je n'avais pas configuré mes configurations ActionMailer dans la config/environments/production .RB "1519130920 de fichier".

puis j'ai réalisé que je venais d'avoir mon config/environments/development.rb configuré pour envoyer-email, mais je ne l'avais pas fait pour mon config/environnements/production.rb .

donc vous pouvez le vérifier lorsque le comportement de votre application difers entre le développement et la production.

18
répondu oppih 2014-02-24 15:56:46

assurez-vous d'avoir configuré votre port correctement. Je suis passé de gmail en développement (port 587) à l'envoi depuis mon serveur local en production et je recevais cette erreur jusqu'à ce que je corrige le port à celui que mon serveur utilise (port 25).

8
répondu Sorry-Im-a-N00b 2013-09-10 00:06:00

pour la production vous ne pouvez pas écrire

config.action_mailer.default_url_options = { :host => "localhost:3000" }

ajouter l'url de production pour l'hôte, comme,

config.action_mailer.default_url_options = { :host => "http://www.yourdomain.com" }
5
répondu Pandurang Waghulde 2013-06-17 05:51:12

mon problème n'est pas identique à cette question, mais je pense que beaucoup trouveraient ce fil via google.

si vous utilisez un service SMTP externe comme sendgrid et que vous avez configuré ActionMailer en conséquence, il y a quand même cette erreur:

Errno:: ECONNREFUSED: Connection refused-connect (2) for "localhost" port 25

vous pouvez passer le hachage de configuration avec la clé String, qui sont ignorés. Les touches doivent être symboles !

cela peut se produire si elle est dé-sérialisée, ce que j'ai fait est de s'assurer que les clés sont des symboles:

config.action_mailer.smtp_settings = get_smtp_setting.symbolize_keys
2
répondu lulalala 2018-02-12 02:42:39

je viens de traquer un problème similaire tout en essayant de déployer wordpress avec Capistrano.

cap aborted! Errno::ECONNREFUSED: Connection refused - connect(2) for "{my-ip-address}" port {my-ssh-port}

je voudrais également obtenir cette erreur similaire:

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}>

il s'avère que c'était un problème avec les sessions SSH simultanées car mon serveur exécute Fail2Ban. Pour résoudre cela, j'ai simplement fait ce qui suit:

  1. éditer la prison qui contient SSH configurations

    $ sudo nano /etc/fail2ban/jail.local

  2. rechercher [SSH] et définir activé = false

  3. puis de trouver [ssh-ddos] et réglez activé = false

  4. N'oubliez pas de redémarrer Fail2Ban après vos modifications et open-ssh (si c'est ce que votre utilisation)

$ sudo service fail2ban reload

$ sudo /etc/init.d/ssh reload

il est intéressant de noter que la connexion serait refusé à différentes étapes (tâches) dans le déploiement. Par exemple après un redémarrage et un rapide bundle exec cap production deploy:check tout semble bien. Puis j'ai essayé de déployer et j'ai reçu la même erreur, mais pendant l'exécution d'une tâche différente. J'utilise aussi UFW que j'ai désactivé et reenabled sans problèmes. UFW n'était pas la cause du problème ci-dessus.

j'ai eu un problème similaire après avoir résolu ceci. C'est une question avec les permissions du répertoire current . C'est par ici.

0
répondu KJ Prince 2017-05-23 12:17:23

il y a une autre raison à cette erreur:

Errno::ECONNREFUSED: Connection refused - connect(2) for "localhost" port 25

il faut regarder le service SENDMAIL sur votre serveur:

  • est-ce que SENDMAIL est installé?
  • est-ce que SENDMAIL fonctionne?

j'ai eu cette erreur à cause de l'arrêt de SENDMAIL.

bonne chance!

0
répondu Taika 2018-06-08 10:35:01