Feature #29208 » 0002-Support-IDN-email-addresses.patch
| 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" |