0

これは特に奇妙な問題です... 私は Devise を使用しており、パスワードのリセットを依頼したときにメールを受け取りたいと思っています。

そこで、この行を development.rb ファイルに追加しました:

ActionMailer::Base.default_url_options[:host] = "localhost:3000"

これはうまく機能しています...

しかし、アドレスを変更してドットを含む何かを書くと、本番アドレス「xxx.herokuapp.com」のようにメールが送信されません。エラーは発生しません。ログには、メールが送信されたことを示すメッセージが表示されますが、何も受信しません。

指定したホスト名にドット (「.」) がない場合にのみ、メールを受信します。


編集

デフォルトの Devise:Mailer を使用すると、すべて正常に動作します。カスタムメーラーに問題があるに違いありません。

ここにあります:Mailer.rb

class Mailer < Devise::Mailer

  include Devise::Mailers::Helpers

  def headers_for(action, opts={})
    headers = {
        :subject       => t("devise.mailer.#{action}.subject"),
        :from          => mailer_sender(devise_mapping),
        :to            => resource.email,
        :bcc           => "myadresse",
        :template_path => template_paths
    }
  end

  def confirmation_instructions(record, opts={})
    devise_mail(record, :confirmation_instructions, opts)
  end

  def reset_password_instructions(record, opts={})
    devise_mail(record, :reset_password_instructions, opts)
  end

  def unlock_instructions(record, opts={})
    devise_mail(record, :unlock_instructions, opts)
  end

end
4

1 に答える 1

0

hereで説明されているように、おそらくsuperこのように呼び出す必要があります

def headers_for(action, opts={})
    headers = super.merge({
        :subject       => t("devise.mailer.#{action}.subject"),
        :from          => mailer_sender(devise_mapping),
        :to            => resource.email,
        :bcc           => "myadresse",
        :template_path => template_paths
    })
end
于 2013-06-26T13:17:13.983 に答える