mailcvt 0.2.16 → 0.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/mailcvt CHANGED
@@ -119,6 +119,15 @@ command :setup do |c|
119
119
  end
120
120
  end
121
121
 
122
+ command :decode do |c|
123
+ c.action do |global_options,options,args|
124
+ err = "decode usage: mailcvt decode [mailcvt-output]"
125
+ raise err unless args.length == 1
126
+ mi = Decoder.new(args[0])
127
+ mi.decode
128
+ end
129
+ end
130
+
122
131
  pre do |global,command,options,args|
123
132
  # Pre logic here
124
133
  # Return true to proceed; false to abort and not call the
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env ruby
2
+ require 'base64'
3
+ require 'date'
4
+
5
+ class EncodedWord
6
+ def initialize(inputdir)
7
+ @inputdir = inputdir
8
+ end
9
+
10
+ def decode
11
+ Dir.glob(File.join(@inputdir, '**/*.mlog')).select do |f|
12
+ puts f
13
+ File.open(f + '.plain', 'w') do |out|
14
+ File.readlines(f).each do |line|
15
+ parts = line.split("\t")
16
+ newparts = []
17
+ newparts << format_date(parts[0]) #date
18
+ newparts << parts[1] #message-id
19
+ newparts << decode_subject(parts[2]) #subject
20
+ newparts << trim_email(parts[3]) #from
21
+ newparts << trim_email(parts[4]) #to
22
+ newparts << trim_email(parts[5]) #cc
23
+ newparts << decode_attachments(parts[6]) unless parts.length == 6 #attachment
24
+ out.puts newparts.join("\t")
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ def format_date(engdate)
31
+ dt = DateTime.parse(engdate)
32
+ dt = dt.new_offset('+0900')
33
+ dt.strftime("%Y/%m/%d %H:%M:%S")
34
+ end
35
+
36
+ def decode_subject(sub)
37
+ one = sub.gsub("\a", '')
38
+ mime_decode(one)
39
+ end
40
+
41
+ def trim_emails(emails)
42
+ parts = emails.split("\a")
43
+ newparts = []
44
+ parts.each do |p|
45
+ newparts << trim_email(p)
46
+ end
47
+ newparts.join("\a")
48
+ end
49
+
50
+ def trim_email(email)
51
+ pos1 = email.index('<')
52
+ if pos1
53
+ pos1 += 1
54
+ pos2 = email.index('>', pos1)
55
+ return email[pos1...pos2]
56
+ end
57
+ email.strip
58
+ end
59
+
60
+ def decode_attachments(attachments)
61
+ parts = attachments.split("\a")
62
+ newparts = []
63
+ parts.each do |p|
64
+ newparts << mime_decode(p)
65
+ end
66
+ newparts.join("\a")
67
+ end
68
+
69
+ def mime_decode(input, out_charset = 'utf-8')
70
+ ret = input.sub!(/=\?([A-Za-z0-9_-]+)\?([BQbq])\?([^\?]+)\?=/) {
71
+ charset = $1
72
+ enc = $2.upcase
73
+ word = $3
74
+ word = word.unpack({ "B"=>"m*", "Q"=>"M*" }[enc]).first
75
+ word.encode(out_charset, charset, :undef=>:replace, :invalid=>:replace)
76
+ }
77
+ return ret ? mime_decode(input) : input
78
+ end
79
+ end
data/lib/mailcvt.rb CHANGED
@@ -8,4 +8,5 @@ require 'mail_parser'
8
8
  require 'setup_mailcvt'
9
9
  require 'to_cc_parser'
10
10
  require 'mail_cleaner'
11
- require 'others_parser.rb'
11
+ require 'others_parser'
12
+ require 'encoded_word'
@@ -1,3 +1,3 @@
1
1
  module Mailcvt
2
- VERSION = '0.2.16'
2
+ VERSION = '0.2.17'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailcvt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.16
4
+ version: 0.2.17
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-09-02 00:00:00.000000000 Z
12
+ date: 2013-10-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -90,6 +90,7 @@ files:
90
90
  - bin/updatesize
91
91
  - lib/base_parser.rb
92
92
  - lib/big_mail_generator.rb
93
+ - lib/encoded_word.rb
93
94
  - lib/grep_mail.rb
94
95
  - lib/log_helper.rb
95
96
  - lib/mail_cleaner.rb
@@ -122,7 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
123
  version: '0'
123
124
  segments:
124
125
  - 0
125
- hash: -3216542987695178977
126
+ hash: -1188711788048111200
126
127
  required_rubygems_version: !ruby/object:Gem::Requirement
127
128
  none: false
128
129
  requirements:
@@ -131,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
132
  version: '0'
132
133
  segments:
133
134
  - 0
134
- hash: -3216542987695178977
135
+ hash: -1188711788048111200
135
136
  requirements: []
136
137
  rubyforge_project:
137
138
  rubygems_version: 1.8.25