MsgToEml: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
мНет описания правки
 
Строка 17: Строка 17:
  ...
  ...


*то нужно поправить 108 строчку в файле /usr/lib/ruby/gems/2.0.0/gems/ruby-msg-1.5.2/lib/mapi/mime.rb
*то нужно поправить 108 строчку в файле {{path|/usr/lib/ruby/gems/<version>/gems/ruby-msg-<version>/lib/mapi/mime.rb}}
diff
<source lang="diff">diff --git a/mime.rb b/mime.rb
108с108
index c738aa3..bc819c0 100644
+++
--- a/mime.rb
< @body = [preamble, parts.map { |part| "\r\n" + part.to_s(opts)'''.force_encoding(Encoding::UTF_8)''' + "\r\n" }, "--\r\n" + epilogue].
+++ b/mime.rb
---
@@ -105,7 +105,7 @@ module Mapi
> @body = [preamble, parts.map { |part| "\r\n" + part.to_s(opts) + "\r\n" }, "--\r\n" + epilogue].
                opts = {:boundary_counter => 0}.merge opts
                if multipart?
                        boundary = Mime.make_boundary opts[:boundary_counter] += 1, self
-                      @body = [preamble, parts.map { |part| "\r\n" + part.to_s(opts) + "\r\n" }, "--\r\n" + epilogue].
+                      @body = [preamble, parts.map { |part| "\r\n" + part.to_s(opts).force_encoding(Encoding::UTF_8) + "\r\n" }, "--\r\n" + epilogue].
                                flatten.join("\r\n--" + boundary)
                        content_type, attrs = Mime.split_header @headers['Content-Type'][0]
                        attrs['boundary'] = boundary</source>
 


[[Категория:HOWTO]]
[[Категория:HOWTO]]
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}

Текущая версия от 06:29, 29 марта 2018

Конвертирование почтового сообщения из .msg (формат MS Outlook) в .eml (стандартный формат MIME RFC 822)

1. Установка необходимого ПО

apt-get install ruby-tools
gem install ruby-msg

2. Собственно выполните следующую команду:

mapitool -i /path/to/file.msg

3. После этого в том же каталоге создастся необходимый file.eml


  • Если во время конвертации проявляется ошибка (и в рез-те eml файл пустой):
/usr/lib/ruby/gems/2.0.0/gems/ruby-msg-1.5.2/lib/mapi/mime.rb:109:in `join': 
incompatible character encodings: UTF-8 and ASCII-8BIT (Encoding::CompatibilityError)
...
  • то нужно поправить 108 строчку в файле /usr/lib/ruby/gems/<version>/gems/ruby-msg-<version>/lib/mapi/mime.rb
diff --git a/mime.rb b/mime.rb
index c738aa3..bc819c0 100644
--- a/mime.rb
+++ b/mime.rb
@@ -105,7 +105,7 @@ module Mapi
                opts = {:boundary_counter => 0}.merge opts
                if multipart?
                        boundary = Mime.make_boundary opts[:boundary_counter] += 1, self
-                       @body = [preamble, parts.map { |part| "\r\n" + part.to_s(opts) + "\r\n" }, "--\r\n" + epilogue].
+                       @body = [preamble, parts.map { |part| "\r\n" + part.to_s(opts).force_encoding(Encoding::UTF_8) + "\r\n" }, "--\r\n" + epilogue].
                                flatten.join("\r\n--" + boundary)
                        content_type, attrs = Mime.split_header @headers['Content-Type'][0]
                        attrs['boundary'] = boundary