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 をループして本文を変更しても、全員の本文が変更されます。これについてもっと良い方法はありますか?