mail2cb 0.0.6 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Dockerfile +37 -0
- data/README.md +13 -0
- data/Rakefile +11 -0
- data/bin/mail2cb +25 -6
- data/bin/run +36 -0
- data/lib/mail2cb/{email_body_parser.rb → email_body_cleanser.rb} +1 -1
- data/lib/mail2cb/email_content.rb +44 -0
- data/lib/mail2cb/email_handler.rb +89 -61
- data/lib/mail2cb/email_watcher.rb +78 -14
- data/lib/mail2cb/encryption.rb +44 -25
- data/lib/mail2cb/message_id_handler.rb +63 -0
- data/lib/mail2cb/version.rb +1 -1
- data/lib/mail2cb.rb +4 -1
- data/mail2cb.gemspec +10 -4
- data/samples/bare_bones.txt +5 -0
- data/samples/reply.txt +226 -0
- data/samples/reply_message_id_in_body.txt +416 -0
- data/samples/reply_with_cc.txt +455 -0
- data/spec/hash_key_matcher.rb +22 -0
- data/spec/helpers.rb +14 -0
- data/spec/mail2cb/email_content_spec.rb +27 -0
- data/spec/mail2cb/email_handler_spec.rb +190 -0
- data/spec/mail2cb/email_watcher_spec.rb +61 -0
- data/spec/mail2cb/encryption_spec.rb +47 -0
- data/spec/mail2cb/message_id_handler_spec.rb +35 -0
- data/spec/spec_helper.rb +15 -0
- metadata +109 -13
@@ -0,0 +1,63 @@
|
|
1
|
+
module Mail2cb
|
2
|
+
class MessageIdHandler
|
3
|
+
|
4
|
+
def initialize(email)
|
5
|
+
@email = email
|
6
|
+
|
7
|
+
@content = EmailContent.new(@email)
|
8
|
+
end
|
9
|
+
|
10
|
+
def message_id
|
11
|
+
from_headers || from_subject || from_body
|
12
|
+
end
|
13
|
+
|
14
|
+
def hash
|
15
|
+
if message_id
|
16
|
+
match = /([a-z]*?)\.([a-z0-9]*?)\.([a-z0-9]*?)@mail.caseblocks.com/.match(message_id)
|
17
|
+
if match
|
18
|
+
if match[1] == "conversation"
|
19
|
+
{"conversation_id" => match[2]}
|
20
|
+
elsif match[1] == "case"
|
21
|
+
{"case_id" => match[2]}
|
22
|
+
else
|
23
|
+
{match[1] => match[2]}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
else
|
27
|
+
{}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def from_headers
|
32
|
+
references.reverse.detect{|id| find_in_content(id) }
|
33
|
+
end
|
34
|
+
def from_subject
|
35
|
+
find_in_content(@email.subject)
|
36
|
+
end
|
37
|
+
def from_body
|
38
|
+
find_in_content(@content.html) || find_in_content(@content.text)
|
39
|
+
end
|
40
|
+
def references
|
41
|
+
refs = @email.header["References"]
|
42
|
+
begin
|
43
|
+
if refs && refs.field.errors.empty?
|
44
|
+
return refs.field.element.message_ids
|
45
|
+
end
|
46
|
+
rescue
|
47
|
+
ap @email.header["References"]
|
48
|
+
end
|
49
|
+
[]
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
def find_in_content(content)
|
54
|
+
match = /([a-z]*?)\.([a-z0-9]*?)\.([a-z0-9]*?)@mail.caseblocks.com/.match(content)
|
55
|
+
if match
|
56
|
+
match[0]
|
57
|
+
else
|
58
|
+
false
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
data/lib/mail2cb/version.rb
CHANGED
data/lib/mail2cb.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require_relative 'mail2cb/version'
|
2
2
|
require_relative 'mail2cb/helpers'
|
3
|
-
require_relative 'mail2cb/
|
3
|
+
require_relative 'mail2cb/email_body_cleanser'
|
4
|
+
require_relative 'mail2cb/email_content'
|
4
5
|
require_relative 'mail2cb/email_watcher'
|
5
6
|
require_relative 'mail2cb/email_handler'
|
6
7
|
require_relative 'mail2cb/encryption'
|
8
|
+
require_relative 'mail2cb/message_id_handler'
|
7
9
|
require 'sinatra/base'
|
8
10
|
require 'json'
|
9
11
|
require 'open3'
|
@@ -16,6 +18,7 @@ module Mail2cb
|
|
16
18
|
@@watcher = EmailWatcher.new
|
17
19
|
|
18
20
|
@@watcher.start
|
21
|
+
Thread.abort_on_exception = true
|
19
22
|
|
20
23
|
my_app = Sinatra.new do
|
21
24
|
set :logging, false
|
data/mail2cb.gemspec
CHANGED
@@ -21,15 +21,21 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.6"
|
22
22
|
spec.add_development_dependency "rake"
|
23
23
|
spec.add_development_dependency "awesome_print"
|
24
|
+
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_development_dependency "timecop"
|
26
|
+
spec.add_development_dependency "mock-aws-s3"
|
27
|
+
|
28
|
+
|
24
29
|
|
25
30
|
spec.add_dependency 'mysql2'
|
26
|
-
spec.add_dependency 'sidekiq'
|
27
31
|
spec.add_dependency 'mail'
|
28
|
-
spec.add_dependency 'mail_daemon', "~> 0.0.
|
29
|
-
spec.add_dependency 'charlock_holmes' # required for sidekiq delivery
|
32
|
+
spec.add_dependency 'mail_daemon', "~> 0.0.8"
|
30
33
|
spec.add_dependency 'nokogiri'
|
31
34
|
spec.add_dependency 'sinatra'
|
32
35
|
spec.add_dependency 'sanitize'
|
33
|
-
|
36
|
+
spec.add_dependency 'faye'
|
37
|
+
spec.add_dependency 'redis'
|
38
|
+
spec.add_dependency 'aws-s3'
|
39
|
+
spec.add_dependency 'rest-client', '~> 1.8'
|
34
40
|
|
35
41
|
end
|
data/samples/reply.txt
ADDED
@@ -0,0 +1,226 @@
|
|
1
|
+
Delivered-To: stewart@activeinformationdesign.com
|
2
|
+
Received: by 10.112.147.106 with SMTP id tj10csp538989lbb;
|
3
|
+
Thu, 14 Apr 2016 04:09:36 -0700 (PDT)
|
4
|
+
X-Received: by 10.28.154.4 with SMTP id c4mr16610816wme.88.1460632176711;
|
5
|
+
Thu, 14 Apr 2016 04:09:36 -0700 (PDT)
|
6
|
+
Return-Path: <stewart@emergeadapt.com>
|
7
|
+
Received: from mail-wm0-x235.google.com (mail-wm0-x235.google.com. [2a00:1450:400c:c09::235])
|
8
|
+
by mx.google.com with ESMTPS id y77si34280990wmc.98.2016.04.14.04.09.36
|
9
|
+
for <stewart@activeinformationdesign.com>
|
10
|
+
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
|
11
|
+
Thu, 14 Apr 2016 04:09:36 -0700 (PDT)
|
12
|
+
Received-SPF: neutral (google.com: 2a00:1450:400c:c09::235 is neither permitted nor denied by domain of stewart@emergeadapt.com) client-ip=2a00:1450:400c:c09::235;
|
13
|
+
Authentication-Results: mx.google.com;
|
14
|
+
dkim=pass header.i=@emergeadapt-com.20150623.gappssmtp.com;
|
15
|
+
spf=neutral (google.com: 2a00:1450:400c:c09::235 is neither permitted nor denied by domain of stewart@emergeadapt.com) smtp.mailfrom=stewart@emergeadapt.com
|
16
|
+
Received: by mail-wm0-x235.google.com with SMTP id u206so120243608wme.1
|
17
|
+
for <stewart@activeinformationdesign.com>; Thu, 14 Apr 2016 04:09:36 -0700 (PDT)
|
18
|
+
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
19
|
+
d=emergeadapt-com.20150623.gappssmtp.com; s=20150623;
|
20
|
+
h=date:from:to:message-id:in-reply-to:references:subject:mime-version;
|
21
|
+
bh=pEIuGA/L/KBb8JXNV05lDAXhrHJJO1bDikKNmqibKv8=;
|
22
|
+
b=TUR4KQf1kPHO1yudZMQLjY1LNRuN5dwO7JUdGsKNUGsfJGKWKBqa4yCyQpSwPt4TPJ
|
23
|
+
WiMN9vn7WI4NiiMqwXtsJ0LedGa3JTMdo45TGceR5VR44QPKFODVZQjAvvoNtRYyvu5b
|
24
|
+
2S60uigKsQ47QEVam7sAf3b+EN3njXQMS9kz+i4mNj/OSJFDVdcJ6kLo8GB6RoCFZRBk
|
25
|
+
gw0UNyDyZN4jrPhClvYTi8G6riCxiDHUXi1dcK4FyoivZyoRum3VyTjgM3W/O4DMPjZq
|
26
|
+
/NUUY+TM9OjhJKGguf4/v3s41vAwHfsxtk2mRbotQqkB5i1qWTSwPYM/kS9dE7CU1BnC
|
27
|
+
IyfQ==
|
28
|
+
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
29
|
+
d=1e100.net; s=20130820;
|
30
|
+
h=x-gm-message-state:date:from:to:message-id:in-reply-to:references
|
31
|
+
:subject:mime-version;
|
32
|
+
bh=pEIuGA/L/KBb8JXNV05lDAXhrHJJO1bDikKNmqibKv8=;
|
33
|
+
b=mGLXs9ZE38pLNw0s6KStos+p5JmriL2hJ+kZyWgM1suosxF0H/Rp6Y6dpFLDR/31EX
|
34
|
+
huPAEebeSnT4FvoNN+g3HLMcu6toXRqSMvxr6RNHkFFTULPw8VnoJMacVxQtlbtmf9yL
|
35
|
+
kFg4GjnKiF4tFKy/FB876ZPBock1ECCYmCKEkSz/PpbtSWrBr9D2fjeAnSF3TuBuoDMy
|
36
|
+
NG5XGN6wTxg476UCQgfsnbMtwmPomrideYR/a76rFnC0oNVw3hsTq4THxpNx9BAS8lA1
|
37
|
+
JeFi/wAAq+DgvCvxA5te3VcRJAUzVcaT+yQP685xHiHwRTeXrS8jx/Yqm8l6l8rfH7cb
|
38
|
+
ZsfQ==
|
39
|
+
X-Gm-Message-State: AOPr4FVwWTraJ6O4DIWopwj/7+yVELMwvM4q3pDk8Rzjv/ZjJGyMIKp8wBqB7NbACeaNgw==
|
40
|
+
X-Received: by 10.194.23.65 with SMTP id k1mr9421523wjf.31.1460632176232;
|
41
|
+
Thu, 14 Apr 2016 04:09:36 -0700 (PDT)
|
42
|
+
Return-Path: <stewart@emergeadapt.com>
|
43
|
+
Received: from Jordans-MacBook-Pro.local (host81-130-148-178.in-addr.btopenworld.com. [81.130.148.178])
|
44
|
+
by smtp.gmail.com with ESMTPSA id x2sm43379531wjr.33.2016.04.14.04.09.35
|
45
|
+
for <stewart@activeinformationdesign.com>
|
46
|
+
(version=TLSv1/SSLv3 cipher=OTHER);
|
47
|
+
Thu, 14 Apr 2016 04:09:35 -0700 (PDT)
|
48
|
+
Date: Thu, 14 Apr 2016 12:09:33 +0100
|
49
|
+
From: Stewart McKee <stewart@emergeadapt.com>
|
50
|
+
To: Stewart McKee <stewart@activeinformationdesign.com>
|
51
|
+
Message-ID: <etPan.570f7a6d.7b5aa127.137@emergeadapt.com>
|
52
|
+
In-Reply-To: <conversation.570f77bc81e9a825e2000001.570f7a1381e9a82659000001@mail.caseblocks.com>
|
53
|
+
References: <conversation.570f77bc81e9a825e2000001.570f7a1381e9a82659000001@mail.caseblocks.com>
|
54
|
+
Subject: Re: Test Conversation
|
55
|
+
X-Mailer: Airmail Beta (353)
|
56
|
+
MIME-Version: 1.0
|
57
|
+
Content-Type: multipart/alternative; boundary="570f7a6d_418e9138_137"
|
58
|
+
|
59
|
+
--570f7a6d_418e9138_137
|
60
|
+
Content-Type: text/plain; charset="utf-8"
|
61
|
+
Content-Transfer-Encoding: quoted-printable
|
62
|
+
Content-Disposition: inline
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
www.emergeadapt.com
|
69
|
+
|
70
|
+
Office: +44 141 632 8395
|
71
|
+
=C2=A0
|
72
|
+
=C2=A9 EmergeAdapt 2016
|
73
|
+
All Rights Reserved.
|
74
|
+
Registered in Scotland SC413041
|
75
|
+
|
76
|
+
On 14 April 2016 at 12:08:09, default=40emergeadapt.com (default=40emerge=
|
77
|
+
adapt.com) wrote:
|
78
|
+
|
79
|
+
Re: Test Conversation
|
80
|
+
=46rom: Stewart
|
81
|
+
|
82
|
+
Bulk Uplift: Bulk Uplift 36-002
|
83
|
+
|
84
|
+
=20
|
85
|
+
|
86
|
+
Test Reply 3
|
87
|
+
|
88
|
+
This message was sent at 14 Apr 11:08 GMT
|
89
|
+
|
90
|
+
Recipients Stewart
|
91
|
+
|
92
|
+
Click here to view the conversation history and the Bulk Uplift in detail=
|
93
|
+
.
|
94
|
+
|
95
|
+
|
96
|
+
--570f7a6d_418e9138_137
|
97
|
+
Content-Type: multipart/related; boundary="570f7a6d_5792cea9_137"
|
98
|
+
|
99
|
+
--570f7a6d_5792cea9_137
|
100
|
+
Content-Type: text/html; charset="utf-8"
|
101
|
+
Content-Transfer-Encoding: quoted-printable
|
102
|
+
Content-Disposition: inline
|
103
|
+
|
104
|
+
<html><head></head><body><h1>Sample html content</h1></body></html>
|
105
|
+
--570f7a6d_5792cea9_137
|
106
|
+
Content-Type: image/png
|
107
|
+
Content-Transfer-Encoding: base64
|
108
|
+
Content-ID: <E8B60400-F80F-4594-AA4C-D6932E7320DB>
|
109
|
+
Content-Disposition: inline; filename="D69E1746-1CEE-47FE-B7E2-8C64E6EC2C63.png"
|
110
|
+
|
111
|
+
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
|
222
|
+
cymsCM6CD/8XkPVUi4gUoCMAAAAASUVORK5CYII=
|
223
|
+
|
224
|
+
--570f7a6d_5792cea9_137--
|
225
|
+
|
226
|
+
--570f7a6d_418e9138_137--
|