Browse Source

Add send decoded mail to Tracim in email fetcher

Guénaël Muller 7 years ago
parent
commit
f38bf3e180
2 changed files with 20 additions and 3 deletions
  1. 14 2
      tracim/tracim/lib/email_fetcher.py
  2. 6 1
      tracim/tracim/lib/test_email_fetcher.py

+ 14 - 2
tracim/tracim/lib/email_fetcher.py View File

6
 import email
6
 import email
7
 import email.header
7
 import email.header
8
 from email.header import Header, decode_header, make_header
8
 from email.header import Header, decode_header, make_header
9
+import requests
9
 import datetime
10
 import datetime
11
+from tracim.controllers.events import VALID_TOKEN_VALUE
12
+import json
10
 
13
 
11
 TRACIM_SPECIAL_KEY_HEADER="X-Tracim-Key"
14
 TRACIM_SPECIAL_KEY_HEADER="X-Tracim-Key"
12
 
15
 
64
     if key is None and 'to' in mailData:
67
     if key is None and 'to' in mailData:
65
         key = find_key_from_mail_adress(mailData['to'])
68
         key = find_key_from_mail_adress(mailData['to'])
66
     if key is None and 'references' in mailData:
69
     if key is None and 'references' in mailData:
67
-        mail_adress = mailData['references'].split('>')[0].replace('<','')
70
+        mail_adress = mailData['references'].split('>')[0].replace('<', '')
68
         key = find_key_from_mail_adress(mail_adress)
71
         key = find_key_from_mail_adress(mail_adress)
69
     return key
72
     return key
70
 
73
 
74
+def get_email_address_from_header(header:str) -> str:
75
+    return header.split('<')[1].split('>')[0]
71
 
76
 
72
 def find_key_from_mail_adress(mail_address:str) -> Union[str,None]:
77
 def find_key_from_mail_adress(mail_address:str) -> Union[str,None]:
73
     """ Parse mail_adress-like string
78
     """ Parse mail_adress-like string
166
         while self._mails:
171
         while self._mails:
167
             mail = self._mails.pop()
172
             mail = self._mails.pop()
168
             decoded_mail = decode_mail(mail)
173
             decoded_mail = decode_mail(mail)
169
-            key = get_tracim_content_key(decoded_mail)
174
+            msg = {"token" : VALID_TOKEN_VALUE,
175
+                   "user_mail" : get_email_address_from_header(decoded_mail['from']),
176
+                   "content_id" : get_tracim_content_key(decoded_mail),
177
+                   "payload": {
178
+                       "content": decoded_mail['body']
179
+                   }}
180
+
181
+            requests.post('http://localhost:8080/events',json=msg)
170
             pass
182
             pass

+ 6 - 1
tracim/tracim/lib/test_email_fetcher.py View File

1
-from email_fetcher import decode_mail, get_tracim_content_key,TRACIM_SPECIAL_KEY_HEADER,find_key_from_mail_adress
1
+from email_fetcher import decode_mail, get_tracim_content_key,\
2
+    TRACIM_SPECIAL_KEY_HEADER,find_key_from_mail_adress,get_email_address_from_header
2
 from email.mime.multipart import MIMEMultipart
3
 from email.mime.multipart import MIMEMultipart
3
 from email.utils import parsedate_tz,mktime_tz
4
 from email.utils import parsedate_tz,mktime_tz
4
 import datetime
5
 import datetime
92
 def test_find_key_from_mail_adress_key():
93
 def test_find_key_from_mail_adress_key():
93
     mail_address="a+key@b"
94
     mail_address="a+key@b"
94
     assert find_key_from_mail_adress(mail_address) == 'key'
95
     assert find_key_from_mail_adress(mail_address) == 'key'
96
+
97
+def test_get_email_address_from_header():
98
+    mail_address = "blabla <a@b>"
99
+    assert  get_email_address_from_header(mail_address) == "a@b"