11

Rails 3 アプリケーションで Devise を使用してアカウントを作成しています。さまざまなタイプのユーザーがいるため、ユーザーのタイプに基づいてカスタムのパスワード回復メールを送信したいと考えています。

カスタム メールを送信できますが、そのメールにカスタム ヘッダーを設定する方法が見つかりません。メールの件名を設定することに特に関心があります。

私は次のことをしました:

  • カスタムメソッドを内部に持つカスタム Devise メーラーを作成しました。このメソッドは、devise_mail をパラメーター付きで呼び出します。この場合、カスタム メーラーは「reset_partner_instructions」と呼ばれます。このメーラーを呼び出して、 User モデルから電子メールを正常に送信できます。
  • から正常に呼び出されるカスタム電子メール ビュー テンプレートを作成しましたdevise_mail

私のカスタムメーラーは次のようになります。

class AccountMailer < Devise::Mailer
  helper :application # gives access to all helpers defined within application_helper.
  def reset_partner_instructions(record, opts={})
    devise_mail(record, :reset_partner_instructions, opts)
  end
end

問題は、メールの件名が常に「パートナーの手順のリセット」であることです。Devise はメール テンプレートの名前からこのタイトルを生成していると思います。

このチュートリアルhttps://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailerでは、次のコードを呼び出します。

def confirmation_instructions(record, opts={})
  headers["Custom-header"] = "Bar"
  super
end

「devise_mail」を直接呼び出しているため、ヘッダーをメーラーに渡す方法がわかりません。メールの件名を設定するために使用できる簡単な設定または方法はありますか?

4

5 に答える 5

21

デバイスヘルパーを参照

class AccountMailer < Devise::Mailer


   def confirmation_instructions(record, opts={})
    headers = {
        :subject => "Subject Here"
    }
    super
  end

end

devise.en.ymlまたは、インティライザーディレクトリのファイルで変更できます

そして、あなた自身の主題を設定してください

mailer:
    confirmation_instructions:
        subject: 'Confirmation instructions'
于 2013-06-08T19:42:38.073 に答える
0

このタスクには ActionMailer を使用する必要があることに気付きました。Devise は追加の機能を提供してくれませんでした。カスタム メーラーを生成しようとしていたので、Devise の外でそれを行うことができました。

于 2013-06-18T18:15:01.687 に答える
-1

カスタムメーラーを設定したり、Devise のconfirmation_instructionsメソッドをオーバーライドしたりする必要はありません。

confirmation_instructionsDevise では、Devise のデフォルト オプションとマージされるメソッドにオプションのパラメータを渡すことができます (optsハッシュは Devise の headers_forヘルパーに渡されます)。

したがって、次のコードを使用して、カスタムの件名で確認指示を送信できます。

Devise::Mailer.confirmation_instructions(user, {subject: "Custom Subject"}).deliver
于 2014-02-10T22:45:53.467 に答える