2015-03-13 56 views
0

我正在構建一個具有帳戶激活功能的Web應用程序。我遵循Michael Hartl ROR教程,我沒有收到任何帳戶激活郵件到我的收件箱。我試圖在網上搜索如何驗證是否發送了一封電子郵件。就像應該有一個我們配置爲發送電子郵件的SMTP服務器?沒有找到有用的東西。有人可以幫忙嗎?如何驗證是否在Ruby on Rails Web應用程序中發送帳戶激活電子郵件

我account_activations_controller.rb

class AccountActivationsController < ApplicationController 

    def edit 
    user = User.find_by(email: params[:email]) 
    if user && !user.activated? && user.authenticated?(:activation, params[:id]) 
     user.activate 
     log_in user 
     flash[:success] = "Account activated!" 
     redirect_to user 
    else 
     flash[:danger] = "Invalid activation link" 
     redirect_to root_url 
    end 
    end 
end 

User_mailer.rb

class UserMailer < ApplicationMailer 

    def account_activation(user) 
    @user = user 
    mail to: user.email, subject: "Account activation" 
    end 
end 

application_mailer.rb

class ApplicationMailer < ActionMailer::Base 
    default from: "[email protected]" 
    layout 'mailer' 
end 

development.rb

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.delivery_method = :test 
    host = 'localhost:3000' 
    config.action_mailer.default_url_options = { :host=> host } 
+0

你需要激活帳號或配置發送電子郵件? – 2015-03-13 14:45:33

+0

您應該添加一些關於您如何發送電子郵件的詳細信息,而不是假設每個人都熟悉教程。任何電子郵件發送方法都需要您執行一些配置才能使其工作。你做到了嗎? – 2015-03-13 14:56:21

+0

@MaxWilliams對不起,我已經更新了我的配置詳細問題 – Sandeep 2015-03-13 15:13:51

回答

2

桑迪普,

請繼續閱讀本教程。我使用了老版本的Michael的教程來學習rails,但是當我想發送確認郵件時又回來了。我認爲你不應該期望發送真正的電子郵件(至少不是在開發模式下),Rails 4.1.x有郵件預覽,你可以查看,我認爲這是教程涵蓋的內容。

當您到達生產環境時,您需要設置一個外部服務器來發送實際的電子郵件,但這將位於production.rb文件中。如果你只是在學習,那麼你有很多選擇,包括設置一個Gmail帳戶(與你的私人帳戶分開),每天發送有限數量的電子郵件。

這裏是我想你應該看看鏈接: listing 10.15

我與邁克爾·哈特爾的教程經驗是,它幾乎是完美無瑕的,你可能有特定的系統設置問題或兩個,但我認爲在大多數情況下,我所遇到的任何問題都與我無關,沒有正確遵循文本。

希望這個幫助,祝你好運!

+0

非常感謝您的回答。我不知道我現在不應該期待電子郵件以開發模式發送。我沒有看到它。 是的,我讀了關於在production.rb文件中設置gmail帳戶以發送電子郵件。我在users.rb中輸入了相同的細節,認爲它可以在我的開發環境中工作。 反正我會繼續教程。再次感謝! – Sandeep 2015-03-15 04:43:16

+0

我的意思是development.rb文件不是users.rb – Sandeep 2015-03-15 04:50:09

1

添加到您的config/environments/development.rb文件

config.action_mailer.raise_delivery_errors = true 

所以你收到此通知,如果有電子郵件遞送錯誤。

除此之外,您可以添加一個字段到如activation_sent_at這樣的users表中,並在發送電子郵件時填充它,以便稍後參考。

+0

我已經將config.action_mailer.raise_delivery_errors設置爲true。如何/我在哪裏得到準確的通知?在development.log中 – Sandeep 2015-03-13 14:55:34

+0

我在我的日誌中看到郵件已發送。但我沒有在我的收件箱中, – Sandeep 2015-03-13 15:00:06

+0

這樣,如果在發送郵件時代碼出現問題,它將引發錯誤。我強烈建議你閱讀[documentation](http://guides.rubyonrails.org/action_mailer_basics.html)。 – DevMarwen 2015-03-13 18:20:53

1

從491頁的底部寫着:「請注意,您將在開發環境中收到實際的電子郵件,但它會在你的服務器日誌顯示10.3節討論瞭如何發送電子郵件真正的生產環境。」所以如果你想明確地跟隨文本,我會在第10.3節中檢查好東西。希望有所幫助!

相關問題