如何在Rails 3中强制HTML电子邮件的字符编码?
我正在使用Rails 3.1(3.1.1 RC1)并且我已将ActionMailer配置为使用windows-1252
作为默认编码。 (外部要求)
这与纯文本邮件完美配合,但只要我发送HTML邮件,文本就会再次转换为UTF-8
,从而导致文本出现乱码。
这是我做过/发现的事情。
- 我配置了默认编码:
ActionMailer::Base.default :charset => 'windows-1252'
- 我的.erb模板实际上是
windows-1252
编码的。 - 我添加了所需的标记
作为模板的第一行。
- 邮件具有正确的内容类型标题:
Content-Type: text/html; charset="windows-1252"
Content-Type: text/html; charset="windows-1252"
这是我用来发送邮件的代码片段:
mail(:to => ..., :subject => "...") do |format| format.html end
我怀疑在邮件处理过程中,Rails / ActionMailer决定将字符转换为UTF-8。 我怎么能改变呢?
您没有提到您正在使用的Ruby版本(1.9.x以与1.8.x不同的方式执行操作),但假设您使用的是1.9版本,则可以在application.rb中设置以下内容:
config.encoding = "windows-1252"
这将设置应用程序范围的编码。 (默认为utf-8)
您应该尝试使用邮件程序中的charset选项。
请参见此处: http : //railsdispatch.com/posts/actionmailer