Slowboy Slowboy - 1 month ago 11
Ruby Question

Using { host: 'localhost', port: 3000 } in ActionMailer in Production.rb for deployment to VPS?

This is the first time I'm working with actionmailer in production.

Earlier I deployed an App to a VPS server. I haven't assigned a domain to it yet so it is only an IP address.

I configured the action mailer settings, but I'm curious about this line:

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
can I use the Ip address of the server instead of
{ host: 'localhost', port: 3000 }
or does the server act as a localhost after the app is deployed with this setting?

Here is the setup code in the
production.rb


config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
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: ENV["SMTP_ADDRESS"],
user_name: ENV["SMTP_USER"],
password: ENV["SMTP_PASSWORD"],
domain: "gmail.com",
port: 587,
authentication: :login,
enable_starttls_auto: true
}

Answer
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

Once you have configured this and you use these settings to send the mail via gmail server. The default url will be used as the domain name of website/application like say for forgot password to users.

  http://localhost:3000/forgot_password?email="fd@ds.com"

You should be changing this to the domain name or the ip where the application code is hosted. localhost is used only for development setups.

Comments