Ruby on rails RubyonRails邮件程序和非unicode域(.р;ф;)

Ruby on rails RubyonRails邮件程序和非unicode域(.р;ф;),ruby-on-rails,ruby,unicode,dns,ruby-1.8,ruby-2.0,Ruby On Rails,Ruby,Unicode,Dns,Ruby 1.8,Ruby 2.0,我的rails应用程序使用俄语cyrryllic域名(.Пф),我有mailer,其中我有来自第节的默认值 像这样: default from: "noreply@портал.рф" mailer的某些部分: class CarMailer < ActionMailer::Base default from: "noreply@портал.рф" def send_car_question_back(question_text, question_email, que

我的rails应用程序使用俄语cyrryllic域名(.Пф),我有mailer,其中我有来自第节的默认值

像这样:

  default from: "noreply@портал.рф"
mailer的某些部分:

class CarMailer < ActionMailer::Base
  default from: "noreply@портал.рф"


  def send_car_question_back(question_text, question_email, question_phone, car_user, car)
    ****
    mail(to: @question_email, subject: "***")
  end
end
'xn----7s454545*******i'
是西里尔语域的正常域编码,正是非ASCII域。中介绍了域名转换方法

您的邮箱不支持非ASCII域转换。因此,您可以尝试在mailer设置中将域名设置为西里尔字母,并使用IDNA转换gems将其转换为ASCII格式:

  • 因为这是最重要的

    和环境配置:

    config.action_mailer.smtp_settings =  {
      #...
      :domain         => IDN::Idna.toASCII('портал.рф')
    }
    
    反之亦然:

    puts 'Idna.toUnicode: ' + IDN::Idna.toUnicode('xn--rksmrgs-5wao1o.josefsson.org')
    
  • 因为你必须使用


  • 什么意思<代码>noreply@xn----7s454545****i?这是西里尔语域的正常域编码
    'xn----7s454545****i'
    ,完全适用于非ascii域。你可以知道你的域
    ПБааа.Пф
    Keephorch选中此项:@asiniy这不是同一个问题。反之亦然:-这是什么?反之亦然是从ascci字符串到unicode的转换。@brabertaser1992返回
    simpleDN.到ascii(“ПöПааа
    ?@brabertaser1992
    simpledn.to_ascii(“Паааа.аф”)
    应该返回类似
    'xn----7s454545****i'
    @МааъСъъ的内容,但我想要俄语文本。。。(
    config.action_mailer.smtp_settings =  {
      #...
      :domain         => IDN::Idna.toASCII('портал.рф')
    }
    
    puts 'Idna.toUnicode: ' + IDN::Idna.toUnicode('xn--rksmrgs-5wao1o.josefsson.org')
    
    require 'idn'
    
    SimpleIDN.to_ascii("портал.рф")
    
    SimpleIDN.to_unicode("xn--mllerriis-l8a.com")