2013-06-01 47 views
1

我正在研究大部分由其他人制作的紅寶石軌道項目,而我的軌道知識是如此。紅寶石在軌道上動作郵件 - 確認電子郵件沒有發送

註冊過程是這樣的(或使用,但似乎並沒有到現在,出於某種原因):

  1. 一個人有姓名,電子郵件,密碼登記。 (全部完成設計)

  2. 該人被髮送一封電子郵件,要求他們點擊一個鏈接,當他們這樣做時,他們是一個註冊用戶,並可以用他們的名字和密碼登錄到應用程序。

當他們執行第1步並點擊'註冊'時,屏幕上出現一條消息:'恭喜!檢查你的電子郵件並點擊鏈接。'

但沒有電子郵件正在發送。在我的應用程序/配置/環境/ development.rb我:

QuestionnaireSite::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the web server when you make code changes. 
    config.cache_classes = false 

    # Log error messages when you accidentally call methods on nil. 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    # Don't care if the mailer can't send 
    config.action_mailer.raise_delivery_errors = false 
    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 
    config.action_mailer.delivery_method = :smtp 
    # config.action_mailer.delivery_method = :letter_opener 
    config.action_mailer.smtp_settings = { 
     :address    => 'smtp.gmail.com', 
     :port     => 587, 
     :domain    => 'gmail.com', 
     :user_name   => '[email protected]', 
     :password    => 'qwerty_123', 
     :authentication  => 'plain', 
     :enable_starttls_auto => true 
    } 

    # Print deprecation notices to the Rails logger 
    config.active_support.deprecation = :log 

    # Only use best-standards-support built into browsers 
    config.action_dispatch.best_standards_support = :builtin 

    # Raise exception on mass assignment protection for Active Record models 
    config.active_record.mass_assignment_sanitizer = :strict 

    # Log the query plan for queries taking more than this (works 
    # with SQLite, MySQL, and PostgreSQL) 
    config.active_record.auto_explain_threshold_in_seconds = 0.5 

    # Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = true 

    config.cache_store = :mem_cache_store 

end 

當我註釋掉行:

config.action_mailer.delivery_method = :smtp 

並取消:

# config.action_mailer.delivery_method = :letter_opener 

一切工作按計劃( letter_opener是一個可以自動註冊過程的gem),所以我知道這個文件中有些事情正在進行。正如我所說的那樣,這是以前的工作,而且我很確定那些是我改變的唯一路線。還有什麼我應該做的?

+0

當你設置'config.action_mailer什麼是錯誤(暫時反正!)。raise_delivery_errors'爲「true」 –

+0

當我更改該設置時,我根本沒有收到任何錯誤。就跟老一樣,'帶確認鏈接的郵件已發送到您的電子郵件地址。請打開鏈接激活您的帳戶。' – CHarris

+0

刪除您的密碼! – David

回答

1

首先,非常感謝您的幫助和指導。

@Peter Klipfel - 事實上,你是對的。我只是刷新我的應用程序,因此沒有錯誤信息提供:

config.action_mailer.raise_delivery_errors = false 

我不得不重新啓動的WEBrick它才能生效。當那做我得到了錯誤:

Net::SMTPAuthenticationError in Devise::RegistrationsController#create 

username and password don't match 

正如我所說的,我繼承了這個項目從別人 - [email protected]可能不存在了。我改變了代碼的那部分:

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.default :charset => "utf-8" 

    config.action_mailer.delivery_method = :smtp 
    # config.action_mailer.delivery_method = :letter_opener 
    config.action_mailer.smtp_settings = { 
     :address    => 'smtp.gmail.com', 
     :port     => 587, 
     # in previous Stackoverflow I read :domain part wasn't needed, so leave it out 
     # :domain    => 'gmail.com', 
     :user_name   => '[email protected]', 
     :password    => 'my_gmail_password', 
     :authentication  => 'plain', 
     :enable_starttls_auto => true 
    } 

而現在一切正常,因爲它應該

2

你需要在你的development.rb文件中的以下以及所有其他的東西:

config.action_mailer.perform_deliveries = true 

沒有上述功能,您的應用程序實際上不會發送電子郵件,而是將只顯示它的內容在您的服務器日誌...檢查命令行輸出(其中軌運行服務器)

注:此設置默認情況下,在生產允許,所以沒有必要存在指定它

相關問題