Sfoglia il codice sorgente

added working methods to read in Data, but is unnecery now

Simon Hammer 3 anni fa
parent
commit
e785db99a5

+ 37 - 0
app/src/main/java/com/noahvogt/miniprojekt/MailFunctions.java

@@ -40,6 +40,43 @@ public class MailFunctions {
         return pythonMailFunctions.callAttr("fetchMails", IMAPConnection, Folder, InputType).asList();
     }
 
+    public static String fetchSubject(int messageIndex){
+        Python python = Python.getInstance();
+        PyObject pythonMailFunction = python.getModule("mailFunctions");
+        return pythonMailFunction.callAttr("printSubject", messageIndex).toString();
+    }
+
+    public static String fetchFrom(int messageIndex){
+        Python python = Python.getInstance();
+        PyObject pythonMailFunction = python.getModule("mailFunctions");
+        return pythonMailFunction.callAttr("printFrom", messageIndex).toString();
+    }
+    public static String fetchTo(int messageIndex){
+        Python python = Python.getInstance();
+        PyObject pythonMailFunction = python.getModule("mailFunctions");
+        return pythonMailFunction.callAttr("printTo", messageIndex).toString();
+    }
+    public static String fetchBcc(int messageIndex){
+        Python python = Python.getInstance();
+        PyObject pythonMailFunction = python.getModule("mailFunctions");
+        return pythonMailFunction.callAttr("printBcc", messageIndex).toString();
+    }
+    public static String fetchCC(int messageIndex){
+        Python python = Python.getInstance();
+        PyObject pythonMailFunction = python.getModule("mailFunctions");
+        return pythonMailFunction.callAttr("printCc", messageIndex).toString();
+    }
+    public static String fetchDate(int meassageIndex){
+        Python python = Python.getInstance();
+        PyObject pythonMailFunction = python.getModule("mailFunctions");
+        return pythonMailFunction.callAttr("printDate", meassageIndex).toString();
+    }
+    public static String fetchContent(int messageIndex){
+        Python python = Python.getInstance();
+        PyObject pythonMailFunction = python.getModule("mailFunctions");
+        return pythonMailFunction.callAttr("printContent", messageIndex).toString();
+    }
+
     public static boolean validateName(EditText emailName) {
         String name = emailName.getText().toString().trim();
 

+ 19 - 19
app/src/main/java/com/noahvogt/miniprojekt/MainActivity.java

@@ -17,7 +17,6 @@ import androidx.drawerlayout.widget.DrawerLayout;
 import androidx.fragment.app.DialogFragment;
 
 
-import com.chaquo.python.PyObject;
 import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.noahvogt.miniprojekt.ui.DataBase.Message;
 import com.noahvogt.miniprojekt.ui.home.CustomAdapter;
@@ -45,10 +44,7 @@ import com.noahvogt.miniprojekt.ui.slideshow.EmailViewModel;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-import java.util.Objects;
 
 import static com.noahvogt.miniprojekt.R.id.drawer_layout;
 
@@ -278,27 +274,31 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                 showToast("Probe Connection ...");
                 if (MailFunctions.canConnect(name, email, password) == Boolean.TRUE) {
                     showToast("was able to connect");
-                    List l =  MailFunctions.listMailboxes(MailFunctions.getIMAPConnection(name, email, password));
-                    for (int i = 0; i < l.size(); i++) {
-                        showToast(l.get(i).toString());
+                    List folders =  MailFunctions.listMailboxes(MailFunctions.getIMAPConnection(name, email, password));
+                    for (int i = 0; i < folders.size(); i++) {
+                        showToast(folders.get(i).toString());
                         // TODO: select right folder to store, Synchronization
                         /*gives list of Message Objects/dictionaries */
+                        List messages = MailFunctions.fetchMailsFromBox(MailFunctions.getIMAPConnection(name, email, password), folders.get(i).toString(), "list");
+                        System.out.println(folders.get(i).toString());
+                        System.out.println(messages.toString());
 
-                        List p = MailFunctions.fetchMailsFromBox(MailFunctions.getIMAPConnection(name, email, password), l.get(i).toString(), "list");
-                        System.out.println(l.get(i).toString());
 
-                        System.out.println(p);
-                        /*
-                        HashMap hashMap;
-                        System.out.println(l.get(i).toString());
-                        System.out.println(p.toString());
-                        for (int k = 0; k < p.size(); k++) {
-                            System.out.println(m);
-                            System.out.println(p.get(k));
-                            System.out.println((p.get(k).getClass().getName()));
-                            // System.out.println(p.get(k));*/
+                        for (int k = 0; k < messages.size(); k++) {
+                            System.out.println(messages.get(k));
+                                /*work now, but list of Messages not */
+                                System.out.println(MailFunctions.fetchSubject(k));
+                                System.out.println(MailFunctions.fetchFrom(k));
+                                System.out.println(MailFunctions.fetchCC(k));
+                                System.out.println(MailFunctions.fetchBcc(k));
+                                System.out.println(MailFunctions.fetchTo(k));
+                                System.out.println(MailFunctions.fetchDate(k));
+                                System.out.println(MailFunctions.fetchContent(k));
 
 
+
+                        }
+
                     }
 
                     /*Message word = new Message(

+ 63 - 14
app/src/main/python/mailFunctions.py

@@ -1,6 +1,15 @@
 import imaplib, smtplib, ssl, email, os
 from itertools import chain
 
+mSubject = ""
+mFrom = ""
+mCC = ""
+mBcc = ""
+mTo = ""
+mDate = ""
+mContent = ""
+output_list= []
+
 # format raw string you get from fetching mails
 def stringCompiling(inputIterable):
     # remove first nested iterables
@@ -67,38 +76,40 @@ def listMailboxes(connection):
     return formatted_mailbox_list
 
 def fetchMails(connection, inbox, outputType):
-    print("###" + inbox + "###")
-    print(type(inbox))
+    #print("###" + inbox + "###")
+    #print(type(inbox))
     try:
         status, messages = connection.select(inbox)
     except:
         return []
 
-    print("status-------\n" + status)
-    print("messages-------\n" + str(messages))
+    #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))
+    #print("message_int------\n" + str(messages_int))
 
     typ, data = connection.search(None, 'ALL')
-    output_list = []
+    global output_list
+
     for num in data[0].split():
         if outputType == "dict":
             output_dict = {}
         else:
-            inner_output_list = []
+           inner_output_list =[]
+
         typ, data = connection.fetch(num, '(RFC822)')
         msg = email.message_from_bytes(data[0][1])
 
         #print(msg)
-        print(num)
+        #print(num)
 
         raw_string = email.header.decode_header(msg['Subject'])[0]
-        print("raw_string: " + str(raw_string))
+        #print("raw_string: " + str(raw_string))
         raw_from = email.header.decode_header(msg['From'])
-        print("raw_from" + str(raw_from))
+        #print("raw_from" + str(raw_from))
         try:
             raw_to = email.header.decode_header(msg['To'])
         except TypeError:
@@ -111,9 +122,9 @@ def fetchMails(connection, inbox, outputType):
             raw_bcc = email.header.decode_header(msg['BCC'])
         except TypeError:
             raw_bcc = [""]
-        print("raw_to" + str(raw_to))
+        #print("raw_to" + str(raw_to))
         raw_date = email.header.decode_header(msg['Date'])[0]
-        print("raw_to" + str(raw_date))
+        #print("raw_to" + str(raw_date))
 
         raw_msg = str(msg)
 
@@ -144,14 +155,24 @@ def fetchMails(connection, inbox, outputType):
             output_list.append(output_dict)
         else:
             inner_output_list.append(subject)
-            inner_output_list.append(stringCompiling(subject))
+            inner_output_list.append(stringCompiling(raw_from))
             inner_output_list.append(stringCompiling(raw_cc))
             inner_output_list.append(stringCompiling(raw_bcc))
             inner_output_list.append(stringCompiling(raw_to))
             inner_output_list.append(stringCompiling(raw_date))
             inner_output_list.append(primitive_body)
 
-            output_list.append(inner_output_dict)
+            output_list.append(inner_output_list)
+
+            global mSubject, mFrom, mCC, mContent, mBcc, mTo, mDate
+            print("subject " + subject)
+            mSubject = subject
+            mFrom = stringCompiling(raw_from)
+            mCC = stringCompiling(raw_cc)
+            mBcc = stringCompiling(raw_bcc)
+            mTo = stringCompiling(raw_to)
+            mDate = stringCompiling(raw_date)
+            mContent = primitive_body
 
 
     connection.close()
@@ -159,6 +180,34 @@ def fetchMails(connection, inbox, outputType):
 
     return output_list
 
+def printSubject(messageIndex):
+    print(output_list[messageIndex][0])
+    return output_list[messageIndex][0]
+
+def printFrom(messageIndex):
+    print(output_list[messageIndex][1])
+    return mFrom
+
+def printCc(messageIndex):
+    print(output_list[messageIndex][2])
+    return mCC
+
+def printBcc(messageIndex):
+    print(output_list[messageIndex][3])
+    return mBcc
+
+def printTo(messageIndex):
+    print(output_list[messageIndex][4])
+    return mTo
+
+def printDate(messageIndex):
+    print(output_list[messageIndex][5])
+    return mDate
+
+def printContent(messageIndex):
+    print(output_list[messageIndex][6])
+    return mContent
+
 def sendStarttls(host, sendingMail, receivingMail, password, message="", subject="", port=587, cc=[], bcc=[]):
     context = ssl.create_default_context()