internetee-registry/app/mailers/interceptors/punycode_interceptor.rb
2021-03-05 19:09:24 +05:00

24 lines
758 B
Ruby

class Interceptors::PunycodeInterceptor
class << self
def delivering_email(message)
message.from = encode_addresses_as_punycode(message.from)
message.to = encode_addresses_as_punycode(message.to)
message.cc = encode_addresses_as_punycode(message.cc) if message.cc
message.bcc = encode_addresses_as_punycode(message.bcc) if message.bcc
end
private
def encode_addresses_as_punycode(addresses)
addresses.map do |address|
local_part, domain_part = address.split('@')
domain_part = encode_domain_part_as_punycode(domain_part)
[local_part, '@', domain_part].join
end
end
def encode_domain_part_as_punycode(domain_part)
SimpleIDN.to_ascii(domain_part)
end
end
end