我已经在我的 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:发送电子邮件的应用程序有多个电子邮件地址作为密件抄送发送。如果电子邮件发往 olddomain.com,我想显示邮件正文。否则,我想剥离消息正文并只显示一条消息。
我很确定这个 delivery_email 只在发送电子邮件时被调用一次,而不是每个 BCC 的多次调用。即使我通过 TO、CC 和 BCC 循环然后修改正文,它也会为每个人修改正文。有没有更好的方法来解决这个问题?