49

私は長い間レールを扱ってきました。今、ActionMailer で小さな問題に直面しています。ユーザーが登録されたときにメールを送信して、登録を確認したいと考えています。開発モードではメールを送信できますが、本番モードでは送信できません。例外Errno::ECONNREFUSED: 接続が拒否されました - connect(2)は、deliverメソッドが呼び出されるたびに発生します。 次のコードを書きました。 私の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      => 'xxxxxxx@xxx.xxx',
    :password       => 'xxxxxxxxx'
  }

コントローラーでは、次のように記述しました。

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

私の 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

ローカル ホストでは開発モードでメールを送信できますが、専用サーバーではメールを送信できません。
誰でも私を助けてもらえますか?

4

7 に答える 7

23

私の状況では、メール送信 Rails アプリのチュートリアルを実行しようとしたときに、同様の問題が発生しました。

......

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

......

自分のコードと作成者のコードを比較したところ、config/environments/production.rbファイルで ActionMailer の構成をセットアップしていないことがわかりました。

その後、 config/environments/development.rbを送信メール用に構成しただけで、config/environments/production.rb用に構成していないことに気付きました。

そのため、アプリの動作が開発と本番で異なる場合に確認できます。

于 2014-02-24T15:56:46.757 に答える
8

ポートが正しく構成されていることを確認してください。開発中のgmail(ポート587)から本番環境のローカルサーバーからの送信に切り替えましたが、サーバーが使用するポート(ポート25)にポートを修正するまでこのエラーが発生していました。

于 2013-09-10T00:06:00.927 に答える
0

rails 7 で turbo_stream を使用している場合 (またはrails 7 demoを実行している場合) に、同様のエラー メッセージが表示される場合があります。

もしそうなら、これを実行するとすべてがうまくいくはずです:

redis-server

詳細はこちら

于 2022-02-27T14:24:19.930 に答える