7

我正在尝试在我的 rails 3.0.10 项目中实现“联系我们”表单。按照 RailsGuides 我创建了一个邮件程序。

class QuestionMailer < ActionMailer::Base
  default :to => "%mail@mydomain" #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

生产.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,所以不能在本地测试。

更新

注意自我。为域帐户创建 gmail 后,不要忘记您的 DNS 设置。>_<

4

1 回答 1

11

您仍然可以使用 sendgrid 在本地进行测试 - 从命令行执行heroku config,您可以获取 Heroku 为 sendgrid 用户名、密码和域设置的值,然后将它们与 actionmailer 设置一起设置在您的 development.rb 中,它将路由您的消息通过本地开发应用程序中的 sendgrid。

我还发现这个 heroku 插件https://github.com/hone/heroku-sendgrid-stats对于检查我的消息发送号码非常有用。

于 2011-08-24T08:07:51.880 回答