7

Rails3.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

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設定を忘れないでください。> _ <

4

1 に答える 1

11

sendgridを使用してローカルでテストできます-コマンドラインdoから、heroku configHerokuがsendgridのユーザー名、パスワード、ドメインに設定した値を取得し、actionmailer設定とともにdevelopment.rbに設定すると、メッセージがルーティングされますローカル開発アプリからsendgridを介して。

また、このherokuプラグインhttps://github.com/hone/heroku-sendgrid-statsは、メッセージ送信番号を確認するのに非常に便利です。

于 2011-08-24T08:07:51.880 に答える