class MailSafe::AddressReplacer
Constants
- ADDRESS_TYPES
Public Class Methods
replace_external_addresses(mail)
click to toggle source
# File lib/mail_safe/address_replacer.rb, line 6 def replace_external_addresses(mail) replaced_addresses = {} ADDRESS_TYPES.each do |address_type| if addresses = mail[address_type].try(:value) new_addresses = [] Array(addresses).each do |a| new_addresses << if MailSafe::Config.is_internal_address?(a) a else (replaced_addresses[address_type] ||= []) << a MailSafe::Config.get_replacement_address(a) end end mail.send("#{address_type}=", new_addresses.uniq) end end self.add_body_postscript(mail, replaced_addresses) end
Protected Class Methods
add_body_postscript(part, replaced_addresses)
click to toggle source
# File lib/mail_safe/address_replacer.rb, line 30 def add_body_postscript(part, replaced_addresses) return unless replaced_addresses.size > 0 case part.content_type when %r{^text/plain} then add_text_postscript(part, replaced_addresses) when %r{^text/html} then add_html_postscript(part, replaced_addresses) end part.parts.each { |p| add_body_postscript(p, replaced_addresses) } end
add_html_postscript(part, replaced_addresses)
click to toggle source
# File lib/mail_safe/address_replacer.rb, line 64 def add_html_postscript(part, replaced_addresses) address_type_postscripts = [] ADDRESS_TYPES.each do |address_type| next unless addresses = replaced_addresses[address_type] address_type_postscripts << "#{address_type}:<ul>\n<li>#{addresses.join("</li>\n<li>")}</li>\n</ul>" end postscript = <<-EOS <div class="mail-safe-postscript"> <hr /> <p> This email originally had different recipients, but MailSafe has prevented it from being sent to them. </p> <p> The original recipients were: </p> <ul> <li> #{address_type_postscripts.join("</li>\n<li>")} </li> </ul> <hr/ > </div> EOS add_postscript(part, postscript) end
add_postscript(part, postscript)
click to toggle source
# File lib/mail_safe/address_replacer.rb, line 97 def add_postscript(part, postscript) part.body = part.body.to_s + postscript.html_safe end
add_text_postscript(part, replaced_addresses)
click to toggle source
# File lib/mail_safe/address_replacer.rb, line 41 def add_text_postscript(part, replaced_addresses) address_type_postscripts = [] ADDRESS_TYPES.each do |address_type| next unless addresses = replaced_addresses[address_type] address_type_postscripts << "- #{address_type}:\n - #{addresses.join("\n - ")}" end postscript = <<-EOS ************************************************** This email originally had different recipients, but MailSafe has prevented it from being sent to them. The original recipients were: #{address_type_postscripts.join("\n\n")} ************************************************** EOS add_postscript(part, postscript) end