2011-08-24 23 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非常有用的检查我的消息发送号码。

相关问题