Project

General

Profile

Feature #29208 » 0002-Support-IDN-email-addresses.patch

Go MAEDA, 2018-09-15 10:56

View differences:

Gemfile
14 14
gem "mimemagic"
15 15
gem "mail", "~> 2.6.4"
16 16
gem "csv", "~> 1.0.2" if RUBY_VERSION >= "2.3"
17
gem "simpleidn"
17 18

  
18 19
gem "nokogiri", "~> 1.8.0"
19 20
gem "i18n", "~> 0.7.0"
app/models/email_address.rb
33 33
  safe_attributes 'address'
34 34

  
35 35
  def address=(arg)
36
    write_attribute(:address, arg.to_s.strip)
36
    local_part, at, domain = arg.to_s.strip.partition('@')
37
    ascii_address = local_part + at + SimpleIDN.to_ascii(domain)
38
    write_attribute(:address, ascii_address)
37 39
  end
38 40

  
39 41
  def destroy
test/unit/user_test.rb
84 84
    assert_equal "foo@bar.com", u.mail
85 85
  end
86 86

  
87
  def test_mail_should_accept_idn
88
    u = User.new
89
    u.mail = "maeda@испытание.test.テスト"
90
    assert_equal "maeda@xn--80akhbyknj4f.test.xn--zckzah", u.mail
91
    # The local-part should be encoded with Punycode
92
    u.mail = "前田@example.jp"
93
    assert_equal "前田@example.jp", u.mail
94
    u.mail = "前田"
95
    assert_equal "前田", u.mail
96
  end
97

  
87 98
  def test_should_create_email_address
88 99
    u = User.new(:firstname => "new", :lastname => "user")
89 100
    u.login = "create_email_address"
(7-7/9)