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,7 +6,10 @@ import imaplib
6 6
 import email
7 7
 import email.header
8 8
 from email.header import Header, decode_header, make_header
9
+import requests
9 10
 import datetime
11
+from tracim.controllers.events import VALID_TOKEN_VALUE
12
+import json
10 13
 
11 14
 TRACIM_SPECIAL_KEY_HEADER="X-Tracim-Key"
12 15
 
@@ -64,10 +67,12 @@ def get_tracim_content_key(mailData:dict) -> Union[str,None]:
64 67
     if key is None and 'to' in mailData:
65 68
         key = find_key_from_mail_adress(mailData['to'])
66 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 71
         key = find_key_from_mail_adress(mail_adress)
69 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 77
 def find_key_from_mail_adress(mail_address:str) -> Union[str,None]:
73 78
     """ Parse mail_adress-like string
@@ -166,5 +171,12 @@ class MailFetcher(object):
166 171
         while self._mails:
167 172
             mail = self._mails.pop()
168 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 182
             pass

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

@@ -1,4 +1,5 @@
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 3
 from email.mime.multipart import MIMEMultipart
3 4
 from email.utils import parsedate_tz,mktime_tz
4 5
 import datetime
@@ -92,3 +93,7 @@ def test_find_key_from_mail_address_no_key():
92 93
 def test_find_key_from_mail_adress_key():
93 94
     mail_address="a+key@b"
94 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"