2011-08-24 20 views
7

我試圖在我的rails 3.0.10項目上實現「聯繫我們」表單。在RailsGuides之後,我創建了一個郵件程序。有沒有辦法在heroku上用sendgrid調試郵件程序?或者檢查郵件是否實際發送?

class QuestionMailer < ActionMailer::Base 
    default :to => "%[email protected]" #gmail for domains 

    def ask(message) 
    @content = message.content 

    unless message.name.nil? or message.name.empty? 
     from = "#{message.name} <#{message.email}>" 
    else 
     from = message.email 
    end 

    mail(:subject => message.subject, :from => from) 
    end 
end 

在我的控制器我有這行:

if @question.valid? 
    QuestionMailer.ask(@question).deliver 
    redirect_to root_url, :notice => "Сообщение отправлено" 
else 

Production.rb:

config.action_mailer.delivery_method = :smtp 
config.action_mailer.default_url_options = { :host => '%mydomain%' } 

ActionMailer::Base.smtp_settings = { 
    :address  => "smtp.sendgrid.net", 
    :port   => "25", 
    :authentication => :plain, 
    :user_name  => ENV['SENDGRID_USERNAME'], 
    :password  => ENV['SENDGRID_PASSWORD'], 
    :domain   => ENV['SENDGRID_DOMAIN'] 
} 

我沒有這個配置在第一,但我沒有收到電子郵件,我補充說。

問題是,Heroku日誌說,相應的視圖已被渲染,但我沒有收到電子郵件。因爲我使用sendgrid,所以我無法在本地進行測試。

UPD

自我提醒。爲域帳戶創建Gmail後,請不要忘記您的DNS設置。 > _ <

回答

11

您可以使用sendgrid在本地進行測試 - 從命令行執行heroku config,您可以獲取Heroku爲sendgrid用戶名,密碼和域設置的值,然後將它們與您的development.rb一起設置actionmailer設置,它會通過本地開發應用程序的sendgrid發送消息。

我還發現這個heroku插件https://github.com/hone/heroku-sendgrid-stats非常有用的檢查我的消息發送號碼。

相關問題