2017-05-01 16 views
0

Cloud9でRailsアプリケーションを開発していますが、私はDevise確認メールを受け取るのにとても簡単な操作をしようとしています。何らかの理由で、彼らは送られていません。Devise確認メールが送信されていない

私は電子メール機能にSendGridを使用しています。私はSendGridが正しく動作していることを知っています。なぜなら、テストメールを送信する簡単なActionMailerを作ることができるからです。しかし何らかの理由で、Deviseの確認メールが送信されていません。私はそれがActionMailer::Base.mailメソッドで呼び出しを行っているのを見ることができますが、メールは配信されません。

これをデバッグする方法はわかりません。ただ、すでに取り組んでいるものをチェックするための提案を防ぐために

  • ユーザーオプションが:confirmable
  • が含ま私はconfig.action_mailer.perform_deliveries = true
  • を設定しています私はconfig/initializers/setup_mail.rb

に次の行を持っていますコード:

if Rails.env.development? || Rails.env.production? 
ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    address:  'smtp.sendgrid.net', 
    port:   '2525', 
    authentication: :plain, 
    user_name:  ENV['SENDGRID_USERNAME'], 
    password:  ENV['SENDGRID_PASSWORD'], 
    domain:   "sendgrid.com", 
    enable_starttls_auto: true 
} 
+0

何が起こっていたのかデバッグしようとして、私はレールコンソール内から 'mail'を呼び出そうとしました。私が見つけたのは、 'ActionMailer :: Base.mail'を直接呼び出してもメールが届かないということでしたが、' ActionMailer'のサブクラスを通して間接的に呼び出すと動作します。なぜ、世界では基本クラスが動作しないのでしょうか? –

+0

なぜ動作するのですか? ActionMailer :: Baseはサブクラス化されています。 – max

+0

しかし、サブクラスは、多くの機能を追加していないよう: 'クラスApplicationMailerから

答えて

0

私の解決策は意図した解決策ではないと思っていますが、それはうまくいきます(なぜか分かりませんが)。これらはおそらく考案のためのいくつかの設定ファイルで指定する必要がありますものですが、私

  1. ActionMailer::Base.layout 'mailer'
  2. ActionMailer::Base.default from: "[email protected]"

:ファイルconfig/initializers/setup_mail.rb

は、私は次の2行を追加しましたそのような指示はありませんでした。

[編集]重要なのは2行目だけです。 "送信元"アドレスが偽の電子メールアドレスであることは重要ではありませんが、それが欠落している場合、電子メールは配信されません。

関連する問題