2011-06-16 85 views
28

我想要使用gmail帳戶發送確認電子郵件。我環顧四周,沒有什麼是顯而易見的。沒有任何錯誤或任何東西,它只是不到風度送gmail smtp與rails 3

我有這樣的initalizer:

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", 
    :user_name   => "<address>@gmail.com", 
    :password    => "<password>", 
    :authentication  => "plain", 
    :enable_starttls_auto => true 
} 

ActionMailer::Base.default_url_options[:host] = "localhost:3000" 
+1

發送電子郵件時,您的控制檯輸出是什麼? – 2011-06-17 01:15:38

回答

5

你應該檢查[email protected]實際上已經發送的電子郵件。過去,當通過Gmail的SMTP服務器發送驗證電子郵件時,我們遇到了問題,因爲批量發送最終不會發送。

我建議您登錄到[email protected]並確認沒有問題並且發送了電子郵件。

如果不是,您可能需要嘗試像Send Grid這樣的服務發送外發電子郵件。

或者,您可以查看您的服務器。或者如果您正在開發中,請查看log/development.log。我非常確定,您可以在日誌中看到它實際上正在嘗試發送郵件。

問題是Google不信任您的本地IP地址,您的郵件將無法發送(甚至無法收到垃圾郵件目錄)。沒有辦法解決這個問題,但使用白名單服務器。

您可以通過將您的應用程序部署到像Heroku這樣的生產服務器並在此處進行測試來嘗試此操作。

8

附加tlsmail到Gemfile中

gem 'tlsmail' 

運行:

bundle install 

添加這些設置來配置/ envirnoments/development.rb文件

YourApplicationName::Application.configure do 
    require 'tlsmail' 
     Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE) 
     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", 
      :enable_starttls_auto => true, 
      :authentication => :login, 
      :user_name => "<addreee>@gmail.com", 
      :password => "<password>" 
     } 

    config.action_mailer.raise_delivery_errors = true 
+8

別忘了重啓服務器;) – 2011-06-17 07:33:30

+3

RESTART SERVER ..... ahhh ...謝謝! – 2013-01-25 01:02:11

64

你不需要tlsmail寶石至少用Rails 3.2

這將足以

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => 'baci.lindsaar.net', 
    :user_name   => '<username>', 
    :password    => '<password>', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 

從萬能的引導ActionMailer configuration for gmail

+0

真棒,很高興知道。爲我節省一堆頭痛。感謝您的領導! – LearningRoR 2012-09-01 15:56:44

+0

沒問題;)我現在已經習慣了在Rails指南中搜索幾乎所有內容 – brutuscat 2012-09-02 15:30:44

+8

顯然,':domain'是[optional](http://bit.ly/QAAPPv),儘管你不知道從閱讀[文檔](http://am.rubyonrails.org/)。 – 2012-10-21 21:32:24

0
config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => 'baci.lindsaar.net', 
    :user_name   => '<username>', 
    :password    => '<password>', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 

<username>手段來填寫你的真實的用戶名? <password>