2009-12-10 232 views
2

我在軌道上的紅寶石新,我已經閱讀了很多教程,但我仍然無法弄清楚什麼是錯的。如何使用Gmail帳戶從ruby發送電子郵件,例如?

我已經成立的environment.rb在底部以下行:

ActionMailer::Base.delivery_method = :smtp 

ActionMailer::Base.default_content_type = "text/html" 

ActionMailer::Base.smtp_settings = { 
    :address  => 'smtp.gmail.com', 
    :port   => 25, 
    :domain   => 'gmail.com', 
    :authentication => :login, 
    :user_name  => '[email protected]', 
    :password  => 'mypassword' 
} 

然後,我有一個與我使用的baseApp傳來了一些代碼,並執行以下操作:

UserMailer.deliver_forgot_password(self) 

是用戶對象,包含電子郵件,登錄等

即方法(屬於UserMailer類)具有下面的代碼:

def forgot_password(user) 
    setup_email(user) 
    @subject += "Forgotten password instructions" 
    #{user.password_reset_code} 
    @body[:url] = "http://#{Setting.get(:site_url)}/users/reset_password/#" 

    end 

protected 
    def setup_email(user) 
     @recipients = "#{user.email}" 
     @from  = "#{Setting.get(:support_name)} <#{Setting.get(:support_email)}>" 
     @subject  = "[#{Setting.get(:site_name)}] " 
     @sent_on  = Time.now 
     @body[:user] = user 

     # Get Settings 
     [:site_name, :company_name, :support_email, :support_name].each do |id| 
     @body[id] = Setting.get(id) 
     end 
    end 

嗯,電子郵件都很好,我已經檢查他們做檢查提高,但它不發送......,並沒有任何扔給我一個例外。

現在我在嘗試發送電子郵件時收到Errno :: ECONNREFUSED錯誤。現在有什麼問題?

感謝, 布賴恩

+0

您使用的是哪種版本的導軌? – Mark 2009-12-10 17:20:08

+0

毫米,如果我右鍵點擊項目,我會看到Ruby平臺:內置JRuby 1.2.0。那是你想知道的嗎? – 2009-12-10 17:56:35

回答

1

Gmail的端口應該是587或465

,並添加

:tls => true, 

你已經安裝了ActionMailerTLS寶石?

+0

它也不工作:( – 2009-12-10 16:42:56

+0

這個問題可能會幫助你http://stackoverflow.com/questions/801005/successfully-installed-actionmaileroptionaltls-to-send-using-gmail – Mark 2009-12-10 16:44:34

+0

謝謝馬克我會嘗試安裝action_mailer_tls插件 我唯一的疑問是,我沒有得到在該帖子中提到的錯誤。我是否必須安裝它呢?也許我的錯誤通知禁用... – 2009-12-10 17:08:34

1

這樣的軌道2.3.2的新方法是

:enable_starttls_auto => true 

無需額外的插件。

+0

是的。我剛剛讀過這個地方。但它仍然無法正常工作。 我爲此配置的所有內容爲: - At development.rb: config.action_mailer。DELIVERY_METHOD =:SMTP config.action_mailer.perform_deliveries =真 config.action_mailer.smtp_settings = { :enable_starttls_auto =>真, :地址=> 「smtp.gmail.com」, :端口=> 587, :域名=> 「domain.com」, :USER_NAME => 「[email protected]」, :密碼=> 「密碼」, :認證=>:普通 } 我需要別的東西,使這個工作?我沒有得到任何例外...我只是沒有收到電子郵件。 – 2009-12-10 17:55:10

+0

我認爲這是建立在development.rb 你有行 config.action_mailer.raise_delivery_errors =真 這是默認設置爲假,也許嘗試設置爲true,看是否需要採取郵寄給你任何交貨錯誤。 – KJF 2009-12-11 18:38:03

1

在我的Mac上,我不得不開啓postfix來發送電子郵件。也許你沒有一個類似的郵件程序打開能夠發送電子郵件。什麼是Windows 7,我不知道。

+0

我也不知道。我想也許它不工作,因爲我的ruby版本。當我右鍵點擊我的項目時,我看到「Ruby平臺:內置JRuby 1.2.0」。我可以選擇那個或者1.8.6-p287我應該下載一個更新的vesion嗎? – 2009-12-10 18:11:19

+0

如果你可以在日誌中看到打印的電子郵件,那麼你的ruby版本不應該成爲問題。也許你需要Windows的IIS或sendmail,但我不熟悉Windows的開發。我不想開始一場激烈的戰爭,但是你可能會考慮創建一個基於Linux的虛擬機,並在那裏開發。在Linux或Mac OS X上開發是一種更好的體驗,並且會有更多熟悉環境的人員能夠幫助您解決這些問題。 – danengle 2009-12-10 22:27:28

相關問題