2012-08-17 10 views
9

Potrzebuję użyć programu pocztowego do wysyłania wiadomości e-mail do użytkowników, aby ustawić ich hasła na "odzyskiwalną" funkcję Devise i aktywnego administratora. Na środowisko programistyczne Zrobiłem to poprzez dodanie poniższych informacji do tych plików:Jak skonfigurować program pocztowy w aplikacji Rails dla środowiska produkcyjnego na Heroku?

/config/środowiskach rozwoju

#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' 
} 

Jak uzyskać tę samą funkcjonalność w środowisku produkcyjnym? Chcę wdrożyć moją aplikację w Heroku. Jakie pliki i kod powinienem dodać?

+1

Potrzebujesz tego samego kodu w config/environments/production.rb – house9

+0

Lub umieść go w config/application.rb, jeśli to samo dla wszystkich twoich środowisk. – house9

+0

Tak, ale co powinienem nałożyć na to w produkcji: config.action_mailer. default_url_options = {: host => '????' } – banditKing

Odpowiedz

3

Jeśli działa w trybie programowania, to będzie działać w trybie produkcyjnym.

Przypuśćmy, że wszystko jest ustawione prawidłowo, zresetowanie hasła w fazie rozwoju wyśle ​​już rzeczywistą wiadomość e-mail przy użyciu konta Gmail.

Dewica polega tylko na poprawnym skonfigurowaniu konfiguracji programu pocztowego (co zostało zrobione) i skonfigurowaniu urządzenia w celu umożliwienia zresetowania hasła i ewentualnie innego ustawienia pola Od wiadomości e-mail.

+2

Tak, ale co powinienem nałożyć na to w produkcji: config.action_mailer.default_url_options = {: host => '????' } – banditKing

7

Wszystkie konfiguracje ustawione w trybie programowania będą działać, Z WYJĄTKIEM, że konieczna będzie rekonfiguracja domyślnego adresu URL programu pocztowego.

So.

  1. Skopiuj i wklej swoje ustawienia z development.rb.

  2. Punkt domyślny program pocztowy do swojej aplikacji Heroku:

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

także uważać jakichkolwiek limitów Twój e-mail SMTP mogą mieć po przeniesieniu do produkcji. Trudno wyzwolić na przykład granice smtp w Gmailu podczas rozwijania, ale mogą być łatwiej wyzwalane w produkcji.

2

To powinno działać poprawnie!

Dopóki config/environments/production.rb ma to samo z wyjątkiem. Opcje default_url_options powinny mieć: wartość hosta "localhost" tylko w wersji deweloperskiej i "YOURAPPNAME.herokuapp.com" w produkcji heroku.

tj

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

Pamiętaj, aby odblokować captcha na gmail, w przeciwnym razie nie będzie wysyłać e-maile z Heroku (nieznane źródła). Można to zrobić wchodząc na ten link: http://www.google.com/accounts/DisplayUnlockCaptcha

Podobnie jak sugestia, powiedziałbym przenieść to z environments.rb

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

i miejsce jest w środowiskach/development.rb jak

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

Nie jest potrzebny w produkcji.

Aby uzyskać więcej informacji na temat Gmaila jako heroku jako nieznanego hosta, zobacz stronę Net::SMTPAuthenticationError when sending email from Rails app (on staging environment).

Powiązane problemy