How to configure Devise email with Heroku and Sendgrid in Rails?
devise, heroku, ruby-on-rails-3.2, sendgrid
Solution
So, your problem is you were referencing the wrong environment variables. Heroku stores your SendGrid credentials in `ENV['SENDGRID_USERNAME']` and `ENV['SENDGRID_PASSWORD']`. You were using your actual username and password as the key names.
This will work:
ActionMailer::Base.smtp_settings = {
:address => 'smtp.sendgrid.net',
:port => '587',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'heroku.com',
:enable_starttls_auto => true
}
Problem
I've got a simple Rails 3.2.7 app with Devise added that is deployed to Heroku with Sendgrid added. It works fine on heroku for everything except when it needs to do a password retrieve which requires sending an email. From all the posts i have read i suspect i am somehow setting up the mail parameters incorrectly. Any suggestions are appreciated. For config/environments/production.rb i added ``` config.action_mailer.default_url_options = { :host => 'smtp.sendgrid.net'} ``` for config/initializers/devise.rb i added ``` config.mailer_sender = "mail-to-send@from.com" ``` and for config/environments.rb i added ``` ActionMailer::Base.smtp_settings = { :address => 'smtp.sendgrid.net', :port => '587', :authentication => :plain, :user_name => ENV['SENDGRID_USERNAME'], :password => ENV['SENDGRID_PASSWORD'], :domain => 'heroku.com', :enable_starttls_auto => true } ```