2013-04-25 14 views
8

Ho una semplice applicazione Rails 3.2.7 con Devise aggiunta che viene distribuita su Heroku con Sendgrid aggiunto. Funziona benissimo su heroku per tutto tranne che quando deve recuperare una password che richiede l'invio di una email. Da tutti i post che ho letto sospetto che in qualche modo sto configurando i parametri della posta in modo errato. Qualsiasi suggerimento è apprezzato.Come configurare Devise e-mail con Heroku e Sendgrid in Rails?

Per config/ambienti/production.rb ho aggiunto

config.action_mailer.default_url_options = { :host => 'smtp.sendgrid.net'} 

per config/inizializzatori/devise.rb ho aggiunto

config.mailer_sender = "[email protected]" 

e per config/environments.rb ho aggiunto

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 
} 

risposta

8

Quindi, il tuo problema è che stai facendo riferimento alle variabili di ambiente sbagliate. Heroku memorizza le tue credenziali SendGrid in ENV['SENDGRID_USERNAME'] e ENV['SENDGRID_PASSWORD']. Stavi usando il tuo vero nome utente e password come nomi delle chiavi.

Ciò funzionerà:

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

Grazie Swift- funziona !! – user2284821