2012-08-17 6 views
9

Ich brauche einen Mailer zum Senden von E-Mails an Benutzer, um ihre Kennwörter auf die "wiederherstellbare" Funktion von Devise und Active Admin setzen. Auf der Entwicklungsumgebung Ich habe dies auf diese Dateien folgende, indem es das getan:Wie Mailer in Rails App für die Produktionsumgebung auf Heroku einrichten

config/Umwelt/Entwicklung

#Added per active admin install instructions 
config.action_mailer.default_url_options = { :host => 'localhost:3000' } 


#These settings are for the sending out email for active admin and consequently the devise mailer 
ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.perform_deliveries = true 
ActionMailer::Base.raise_delivery_errors = true 
ActionMailer::Base.smtp_settings = 
{ 

    :address   => 'smtp.gmail.com', 
    :port    => 587, 
    :domain    => 'gmail.com', #you can also use google.com 
    :authentication  => :plain, 
    :user_name   => '[email protected]', 
    :password   => 'XXXXXXX' 
} 

Wie kann ich die gleiche Funktionalität für die Produktionsumgebung erhalten? Ich möchte meine App auf Heroku bereitstellen. Welche Dateien und Code müsste ich hinzufügen?

+1

Sie brauchen den gleichen Code in config/environments/production.rb – house9

+0

Oder setzen Sie es in config/application.rb wenn das gleiche für alle Ihre Umgebungen – house9

+0

Ja, aber was soll ich dafür in der Produktion setzen: config.action_mailer. default_url_options = {: host => '????' } – banditKing

Antwort

3

Wenn es im Entwicklungsmodus funktioniert, wird es im Produktionsmodus arbeiten.

Wenn alles korrekt eingerichtet ist, wird beim Zurücksetzen eines Kennworts während der Entwicklung bereits eine E-Mail mit Ihrem Google Mail-Konto gesendet.

Devise verlässt sich nur auf die Konfiguration der Mailer-Konfiguration korrekt (was Sie getan haben) und Konfiguration Gerät, um das Zurücksetzen des Passworts und möglicherweise eine andere Einstellung für das Feld Von der E-Mail zu ermöglichen.

+2

verwenden Ja, aber was soll ich dafür in der Produktion setzen: config.action_mailer.default_url_options = {: host => '????' } – banditKing

7

Alle Konfigurationen, die Sie im Entwicklungsmodus eingestellt haben, funktionieren. AUSSER müssen Sie die Standard-Mailer-URL neu konfigurieren.

So.

  1. Kopieren Sie Ihre Einstellungen aus development.rb.

  2. Point Ihr Standard-Mailer Ihre Heroku App:

    config.action_mailer.default_url_options = { :host => 'YOURAPPNAME.herokuapp.com' } 
    

Auch vorsichtig sein, jede E-Mail Grenzen Sie Ihre SMTP- haben können, wenn die Produktion bewegen. Es ist zwar schwierig, während der Entwicklung die smtp-Beschränkungen von Google Mail auszulösen, aber sie könnten in der Produktion leichter ausgelöst werden.

2

Das sollte gut funktionieren!

Solange config/environments/production.rb das gleiche mit einer Ausnahme hat. Die default_url_options sollten einen Host-Wert von 'localhost' nur in der Entwicklung und 'YOURAPPNAME.herokuapp.com' in der heroku-Produktion haben.

heißt

config.action_mailer.default_url_options = { :host => 'YOURAPPNAME.herokuapp.com' } 

Erinnern Captcha auf gmail zu entsperren, sonst wird es nicht E-Mail von Heroku (unbekannte Quelle) senden. Sie können, indem Sie auf diesen Link tun: http://www.google.com/accounts/DisplayUnlockCaptcha

nur als Vorschlag, würde ich sagen, dass dies von environments.rb

ActionMailer::Base.perform_deliveries = true 
ActionMailer::Base.raise_delivery_errors = true 

bewegen und Platz ist in Umgebungen/development.rb als

config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true 

Es wird nicht in der Produktion benötigt.

Weitere Informationen zu Google Mail, mit dem Heroku als unbekannter Host angezeigt wird, finden Sie unter Net::SMTPAuthenticationError when sending email from Rails app (on staging environment).