我的rails应用程序使用俄罗斯cyrrylic域名(.рф(,那里我有mailer,其中我有来自节的默认值。。。
像这样:
default from: "noreply@портал.рф"
邮件的某些部分:
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
但在我的邮箱里noreply@blablabla带有一些strane号码(如垃圾邮件:(
有没有什么方法可以发送邮件,并将发件人设置为cyryllic格式?
在env-confg中我有:
config.action_mailer.smtp_settings = {
:enable_starttls_auto => false,
:address => 'localhost',
:port => 25,
:domain => 'xn----7s454545*****i',
:authentication => :login,
:content_type => "text/html",
:user_name => 'noreply@xn----7s454545*****i',
:password => '*****'
}
config.action_mailer.default_url_options = { :host => 'xn----7s454545*****i' }
'xn----7s454545*****i'
是cyrillic域的普通域编码,正好是非ASCII域的编码。在RFC 3490中描述了域名转换方法。
您的邮箱不支持非ASCII域转换。因此,您可以尝试将mailer设置中的域名设置为cyrillic域名,并使用IDNA转换宝石将其转换为ASCII形式:
-
对于ruby-1.8,它是
idn
宝石。require 'idn'
和环境配置:
config.action_mailer.smtp_settings = {
#...
:domain => IDN::Idna.toASCII('портал.рф')
}
反之亦然:
puts 'Idna.toUnicode: ' + IDN::Idna.toUnicode('xn--rksmrgs-5wao1o.josefsson.org')
对于ruby-2.0,您必须使用
simpleidn
gem。require 'idn' SimpleIDN.to_ascii("портал.рф") SimpleIDN.to_unicode("xn--mllerriis-l8a.com")