Эх сурвалжийг харах

experimental mail functions added

Noah Vogt 3 жил өмнө
parent
commit
4a0a282c92
1 өөрчлөгдсөн 72 нэмэгдсэн , 1 устгасан
  1. 72 1
      tests/mailFunctions.py

+ 72 - 1
tests/mailFunctions.py

@@ -1,4 +1,4 @@
-import imaplib
+import imaplib, email, os
 
 def errorMsgExit(error_msg):
     print("Error: " + error_msg)
@@ -16,6 +16,7 @@ def checkConnection(host, username, password, port):
 def connect(host, username, password, port):
     connect = imaplib.IMAP4_SSL(host, port)
     connect.login(username, password)
+    connect.enable("UTF8=ACCEPT")
     return connect
 
 def listMailboxes(connection):
@@ -37,3 +38,73 @@ def listMailboxes(connection):
 
     connection.logout()
     return formatted_mailbox_list
+
+def fetchMails(connection, inbox):
+    status, messages = connection.select(inbox)
+    print("status-------\n" + status)
+    print("messages-------\n" + str(messages))
+    # number of top emails to fetch
+    N = 3
+    # total number of emails
+    messages_int = int(messages[0])
+    print("message_int------\n" + str(messages_int))
+
+    typ, data = connection.search(None, 'ALL')
+    output_list = []
+    for num in data[0].split():
+        typ, data = connection.fetch(num, '(RFC822)')
+        msg = email.message_from_bytes(data[0][1])
+        #print(type(msg))
+        #print(msg)
+        raw_subject = email.header.decode_header(msg['Subject'])[0]
+        #raw_body = email.header.decode_header(msg['Body'])[0][0]
+        '''
+        if decode[1] == 'utf-8':
+            subject = decode[0].decode('utf-8')
+        else:
+            subject = decode[0]
+        '''
+        #print("subject: {}".format(subject))
+        #input()
+        #print('Message %s\n%s\n' % (num, data[0][1]))
+        #print('Message %s\n%s\n' % (num, data[0][1].split()))
+        #print('%s\n' % (len(data[0][1].split())))
+        '''
+        j = 0
+        for i in range(len(str(msg))):
+            if str(msg)[i] == "\n":
+                print(str(msg)[j:i])
+                j = int(i)
+        '''
+
+
+        output_list.append(str(raw_subject))
+
+    connection.close()
+    connection.logout()
+
+    return output_list
+
+def afetchMails(con):
+    con.select("Sent")
+    status, email_ids = con.search(None, "ALL")
+    if status != 'OK':
+        raise Exception("Error running imap search for spinvox messages: "
+                        "%s" % status)
+
+    print(email_ids[0])
+    fetch_ids = ','.join(str(email_ids[0]).split())
+    status, data = con.fetch(3, '(RFC822)')
+    if status != 'OK':
+        raise Exception("Error running imap fetch for spinvox message: "
+                        "%s" % status)
+    for i in range(3,4):
+        header_msg = email.message_from_string(data[i * 3 + 0][1])
+        subject = header_msg['Subject'],
+        print(subject)
+        date = header_msg['Date'],
+        print(date)
+        body = data[i * 3 + 1][1]
+        print(body)
+    connection.close()
+    connection.logout()