ruby-on-rails - 有没有办法在heroku上使用sendgrid调试邮件程序?或者检查邮件是否实际发送?

标签 ruby-on-rails ruby-on-rails-3 heroku actionmailer sendgrid

我正在尝试在我的 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

在我的 Controller 中,我有以下几行:
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 日志说,相应的 View 已经呈现,但我没有收到电子邮件。而且因为我使用sendgrid,我无法在本地测试它。

更新

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

最佳答案

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

我也找到了这个 heroku 插件 https://github.com/hone/heroku-sendgrid-stats检查我的消息发送号码非常有用。

关于ruby-on-rails - 有没有办法在heroku上使用sendgrid调试邮件程序?或者检查邮件是否实际发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7171978/

相关文章:

ruby-on-rails - 如何在 Cloud9 IDE 开发服务器中处理 Twilio 回发?

git - 有没有办法获取 heroku toolbelt 的各个组件?

javascript - 将 SVG 附加到 DOM 不起作用 - 重新加载 Assets 管道?

ruby-on-rails - 在 Rails 中对数字字符串进行排序

ruby-on-rails - 在父类中使用派生类的属性

ruby-on-rails - 延迟发送电子邮件

node.js - Heroku 部署,未添加 git remote

ruby-on-rails - rails 3 : update URL params with AJAX request

ruby-on-rails - rspec 测试时,ActionMailer 方法调用在模块中返回 nil

ruby-on-rails - Rails Assets 预编译不起作用