0

Ruby on Rails アプリケーションで動作中のインターセプトを実行しています。現在、以下の手法を使用して件名をうまく変更できますが、何らかの理由で本文を変更できません。

/config/initializers 内で、次のようにインターセプターを登録します。

ActionMailer::Base.register_interceptor(MailIntercept)

/lib/ の内部には、次のように mail_intercept というファイルがあります。

class MailIntercept
  def self.delivering_email(message)
   message.subject = "Modified Subject"
   message.body = "Modified Body"

   if message.to.split("@").last == "olddomain.com"
    message.subject = "Domain is olddomain.com, safe to display message"
    message.body = message.body + "Domain is olddomain.com, safe to display message" 
    else
    message.subject = "Domain is NOT olddomain.com, hide message"
    message.body = "Domain is NOT olddomain.com, hide message."
   end

   end
end

問題 #1: ボディは変更されません。

問題 #2: 電子メールを送信しているアプリケーションで、複数の電子メール アドレスが BCC として送信されています。olddomain.com 宛てのメールの場合、メッセージ本文を表示したい。それ以外の場合は、メッセージ本文を削除してメッセージを表示するだけです。

この delivery_email は、メールの送信時に 1 回だけ呼び出され、BCC ごとに複数回呼び出されることはないと確信しています。TO、CC、および BCC をループして本文を変更しても、全員の本文が変更されます。これについてもっと良い方法はありますか?

4

1 に答える 1

1

コードを確認しました。Rails 3.2.6 を使用しています。問題なく動作しています。

問題はアクションメーラーメソッドの呼び出し場所にあるのではないかと思います

于 2012-12-06T15:22:34.123 に答える