Rails 3.0.11
ruby 1.9.3dev (2011-09-23 редакция 33323) [x86_64-linux]
mail gem v. 2.2.19
postfix v. 2.7.0
Я отправляю полученные письма на адрес actionmailer .Обычно это работает хорошо, если полученное письмо не закодировано неправильно.
Я пробовал несколько подходов, но всегда получаю неправильную последовательность байтов в ошибке UTF-8 .
Вот как я пытаюсь правильно закодировать / принудительно закодировать правильную кодировку в actionmailer:
email.text_part.decoded.force_encoding('UTF-8').encode('UTF-8', undef: :replace, invalid: :replace, replace: "")
Вот как я пересылаю почту в мое приложение (содержимое файла / etc / aliases, как предложено rubyпо направляющим)
theaddress: "|/usr/local/rvm/bin/ruby-1.9.3-rc1 /var/www/myapp/script/rails runner -e mailer 'Mymailer.receive(STDIN.read)'"
Я также попытался передать почту через iconv first
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