私は長い間レールを扱ってきました。今、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
ローカル ホストでは開発モードでメールを送信できますが、専用サーバーではメールを送信できません。
誰でも私を助けてもらえますか?