【发布时间】:2012-07-14 03:51:42
【问题描述】:
Rails 3.0.11
ruby 1.9.3dev(2011-09-23 修订版 33323)[x86_64-linux]
邮件 gem v. 2.2.19
后缀 v. 2.7.0
我通过管道received emails to an actionmailer。除非收到的电子邮件没有正确编码,否则这通常效果很好。
我尝试了多种方法,但总是以 invalid byte sequence in UTF-8 错误告终。
这就是我尝试在 actionmailer 中正确编码/强制正确编码的方式:
email.text_part.decoded.force_encoding('UTF-8').encode('UTF-8', undef: :replace, invalid: :replace, replace: "")
这就是我将邮件转发到我的应用程序的方式(/etc/aliases 文件的内容,如 ruby on rails 指南所建议的那样)
theaddress: "|/usr/local/rvm/bin/ruby-1.9.3-rc1 /var/www/myapp/script/rails runner -e mailer 'Mymailer.receive(STDIN.read)'"
我也尝试过首先通过iconv 发送邮件
theaddress: "|iconv -t UTF-8 -c |/usr/local/rvm/bin/ruby-1.9.3-rc1 /var/www/myapp/script/rails runner -e mailer 'Mymailer.receive(STDIN.read)'"
我也尝试过使用 Encding::Converter
Encoding::Converter.new("UTF-8//IGNORE", "UTF-8")
感谢您的任何见解和帮助!
解决方案
我必须在我的环境文件中添加以下内容:
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
我还删除了所有 force_encoding 和 encoding 方法。所以以下现在有效:
email.text_part.decoded
【问题讨论】:
-
您应该发布您的解决方案作为答案。
标签: ruby-on-rails-3 character-encoding postfix-mta