2012-07-26 23 views
3

我知道這是一個簡單的問題,而且問了很多次,我也問過這個問題,因爲我檢查的所有前一個都是基於rails 3.0.0版本我正在使用最新的一個。我有一個包含姓名和電子郵件字段的用戶註冊表單。我想這樣做,當用戶點擊提交按鈕時,應由用戶將電子郵件發送到指定的電子郵件地址,我正在使用rails 3.2.5版本和gem'mail'版本2.4.4開發日誌文件顯示郵件是發送到電子郵件地址,但沒有在收件箱中找到。我也知道,在開發模式下,郵件程序不會向任何地址發送郵件,但我想在開發階段執行此操作。我的代碼是:在Rails版本3.2.5中使用動作郵件發送電子郵件

/config/initializers/setup_mail.rb

ActionMailer::Base.smtp_settings = { 
:address    => "smtp.gmail.com", 
:port     => 587, 
:domain    => "asciicasts.com", 
:user_name   => "asciicasts", 
:password    => "secret", 
:authentication  => "plain", 
:enable_starttls_auto => true 
} 

/app/mailers/user_mailer.rb

class UserMailer < ActionMailer::Base 
default :from => "[email protected]" 

def registration_confirmation(user) 
mail(:to => user.email, :subject => "Registered") 
end 
end 

/app/controllers/users_controller.rb

def create 
@user = User.new(params[:user]) 

respond_to do |format| 
if @user.save 
UserMailer.registration_confirmation(@user).deliver 
format.html { redirect_to(@user, :notice => 'User was successfully created.') } 
format.xml { render :xml => @user, :status => :created, :location => @user } 
else 
format.html { render :action => "new" } 
format.xml { render :xml => @user.errors, :status => :unprocessable_entity } 
end 
end 
end 

所以任何人都請幫助我。

+0

http://stackoverflow.com/questions/4313177/sending-mail-with-rails-3-in-development-environment – 2012-07-26 13:17:09

+0

默認情況下'config.action_mailer.raise_delivery_errors = false'開發環境,這意味着鐵路不會嘗試發送電子郵件,但您仍然可以在日誌文件中查看整個電子郵件以進行驗證。因此,首先將此屬性值設置爲true,重新啓動服務器並嘗試再次發送。這可以通過分析日誌來幫助您找到問題。 – 2012-07-26 16:49:11

+0

我仍然堅持同樣的問題在發出文件development.log加入郵寄入境但不是在我的收件箱顯示我也做 config.action_mailer.raise_delivery_errors =真實的,但它不工作的建議,歡迎 – 2012-07-27 08:18:18

回答

2

我最近也遇到類似這樣的事情。

config/environments/development.rb

config.action_mailer.perform_deliveries = true#此項目讓我覺得郵件應該被髮送之前由傢伙開發商升級他們。

我還發現這些郵件沒有被髮送。周圍挖,我發現config/email.yml它看起來像這樣:

development: 
    :delivery_method: test 
    :settings: 
    :address: <email_server_address> 
    :port: 25 

當我改變:delivery_method: test:delivery_method: sendmail(這是我們用在我的公司),它開始工作。總之,我發現config/email.yml中的設置是最後一次評估的,並且會勝過您個人環境文件中的任何內容。

相關問題