想在Action Mailer中使用多个编码

时间:2014-07-03 12:13:16

标签: ruby-on-rails ruby encoding character-encoding internationalization

我有一个已经国际化的Rails 4应用程序。我的应用程序发送每种语言的电子邮件。它最初用英语和法语写成。在我有法语文本的地方,我在文件的开头添加了# encoding: utf-8语句。

我刚刚将葡萄牙语添加到我的应用程序中。在我的邮件程序中,我在文件开头有# encoding: utf-8语句。但是,当我尝试通过UTF-8编码发送葡萄牙电子邮件时,它无法正常工作。我已将这些电子邮件中的字符集从UTF-8更改为ISO-8859-1。

我在邮件中有外国文本,而不是使用I18n哈希,因为我有一些多语言的人使用我的应用程序。每个人都可以选择他们想要接收电子邮件的语言。

有没有办法在一个文件中使用多种类型的编码?我已经完成了在线搜索,但只看到了具有单一值的示例。

任何帮助都将不胜感激。

更新时间:2014年3月3日上午7:25 CDT

以下是我在尝试发送葡萄牙电子邮件时遇到的错误。

I, [2014-07-03T06:44:38.810000 #31093]  INFO -- : Completed 500 Internal Server Error in 43ms
F, [2014-07-03T06:44:38.812179 #31093] FATAL -- : 
ActionView::Template::Error (Your template was not saved as valid UTF-8. Please either specify UTF-8 as the encoding for your template in your text editor, or mark the template with its encoding by inserting the following as the first line of the template:

# encoding: <name of correct encoding>.

The source of your template was:

<!DOCTYPE html>
<html>
  <head><meta content="text/html; charset=UTF-8" http-equiv="Content-Type" /></head>
  <body>
        <p style="text-align: center;"><a href="http://www.iktusnetlive.com"><img src="http://www.iktusnetlive.com/assets/header-speakers-pt.jpg", alt: "iktusNETlive"></a></p>
    <p><%= @user.first_name %>, sua conta de usuário GRATUITA iktusNET foi ativada!!!</p>
    <p>Você agora pode usar sua conta de usuário GRATUITA iktusNET com endereço de email <%= @user.email %> com nome de usuário <%= @user.username %>.</p>
    <p>Você agora tem acesso ao Webcast de Vídeo ao Vivo, ao FÓRUM de Discussão à Rede de CÍRCULO Social.</p>
    <p>Nota:  Tenha certeza que você escreva abaixo sua informação de login. Letras em Caixa Alta no seu endereço de email e nome de usuário serão ignoradas. Seu endereço de email e nome de usuário serão salvos somente com letras em caixa baixa. Nós armazenamos a sua senha de maneira segura. Ela é encriptada de tal forma que ninguém pode descobrir o que ela é, incluindo o Time da iktusNET. Contanto, se você esquecer a sua senha você pode requerer que sua senha seja resetada na tela de login.</p>
        <p>Nós temos uma Biblioteca de Mídia onde você pode ouvir, assistir e ler materiais de ministérios que ensinam mensagens de forma similar à ensinada pelo Centro de Oração de Tulsa. Você pode usar a Biblioteca de Mídia sem estar logado na sua Conta de Usuário GRATUITA iktusNET. Esta página pode ser acessada a partir daS PáginaS HOME ou MÍDIA. </p>
    <p style="text-align: justify;">Clique <%= link_to "here", "http://www.iktusnetlive.com/pt/invite" %> para Convidar seus AMIGOS para ingressar à iktusNETlive. </p>
    <p>Muito obrigado por ingressar à iktusNET e tenha um ótimo dia! </p>
        <p>O Time iktusNET</p>
  </body>
</html>):
  app/mailers/user_mailer.rb:31:in `acctact_email_pt'
  app/controllers/users_controller.rb:134:in `update'

1 个答案:

答案 0 :(得分:0)

视图文件本身的编码不正确。您必须配置文本编辑器以将文件保存在有效的utf-8中。

将文件标记为#encoding utf-8将无济于事,因为当它实际上采用不同的编码时,会强制ruby(错误地)将其解释为utf-8。