如何在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