浏览代码

merged fully, tried to download with activity

Simon Hammer 3 年之前
父节点
当前提交
881d13b11a

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -22,6 +22,7 @@
             </intent-filter>
         </activity>
         <activity android:name=".SettingsActivity"/>
+        <activity android:name=".data.ReadInMailsActivity"/>
     </application>
 
 </manifest>

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

@@ -42,6 +42,7 @@ import com.google.android.material.snackbar.Snackbar;
 import com.noahvogt.miniprojekt.data.CustomAdapter;
 import com.noahvogt.miniprojekt.data.EmailViewModel;
 import com.noahvogt.miniprojekt.data.MailFunctions;
+import com.noahvogt.miniprojekt.data.ReadInMailsActivity;
 import com.noahvogt.miniprojekt.ui.show.MessageShowFragment;
 
 import java.text.SimpleDateFormat;
@@ -324,21 +325,35 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
                     return;
                 }
 
+
                 /* connect to mail server and print various debugging output */
                 showToast("Probe Connection ...");
                 if (MailFunctions.canConnect(MailFunctions.getImapHostFromEmail(email), email, password) == Boolean.TRUE) {
                     showToast("was able to connect");
 
+                    Intent intent = new Intent(getBaseContext(), ReadInMailsActivity.class);
+                    intent.putExtra("Email", email);
+                    intent.putExtra("Password", password);
+                    startActivity(intent);
+                    //startActivityForResult(intent, MainActivity.NEW_WORD_ACTIVITY_REQUEST_CODE);
+
+
+                    /*
                     List folders =  MailFunctions.listMailboxes(MailFunctions.getIMAPConnection(MailFunctions.getImapHostFromEmail(email), 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 p = MailFunctions.fetchMailsFromBox(MailFunctions.getIMAPConnection(name, email, password), l.get(i).toString(), "list");
-                        System.out.println(l.get(i).toString());
-                        System.out.println(p);*/
+                       /* List p = MailFunctions.fetchMailsFromBox(
+                                MailFunctions.getIMAPConnection(
+                                        MailFunctions.getImapHostFromEmail(email), email, password),
+                                folders.get(i).toString(), "list");
+                        System.out.println(folders.get(i).toString());
+                        System.out.println(p);
                     }
 
+                        */
+
 
 
 

+ 1 - 1
app/src/main/java/com/noahvogt/miniprojekt/MessageCreateFragment.java

@@ -171,7 +171,7 @@ public class MessageCreateFragment extends DialogFragment implements PopupMenu.O
                                     Intent intent = new Intent(getContext(), NewDraftMessageActivity.class);
                                     startActivityForResult(intent, MainActivity.NEW_WORD_ACTIVITY_REQUEST_CODE);
 
-                                    /*if this button is clicked, close the whole fragment */
+                                    /* close the whole fragment */
                                     dismiss();
                                 }
                             })

+ 2 - 38
app/src/main/java/com/noahvogt/miniprojekt/data/MailFunctions.java

@@ -34,48 +34,12 @@ public class MailFunctions {
         return pythonMailFunctions.callAttr("listMailboxes", IMAPConnection).asList();
     }
 
-    public static List fetchMailsFromBox(PyObject IMAPConnection, String Folder, String InputType) {
+    public static List fetchMailsFromBox(PyObject IMAPConnection, String Folder) {
         Python python = Python.getInstance();
         PyObject pythonMailFunctions = python.getModule("mailFunctions");
-        return pythonMailFunctions.callAttr("fetchMails", IMAPConnection, Folder, InputType).asList();
+        return pythonMailFunctions.callAttr("fetchMails", IMAPConnection, Folder).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();

+ 47 - 0
app/src/main/java/com/noahvogt/miniprojekt/data/ReadInMailsActivity.java

@@ -0,0 +1,47 @@
+package com.noahvogt.miniprojekt.data;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.noahvogt.miniprojekt.R;
+
+import java.util.List;
+
+public class ReadInMailsActivity extends AppCompatActivity {
+
+    String mEmail;
+    String mPassword;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState){
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        Intent intent = getIntent();
+        mEmail = intent.getStringExtra("Email");
+        mPassword = intent.getStringExtra("Password");
+
+        Toast.makeText(getBaseContext(),"Probe Connection ...", Toast.LENGTH_SHORT).show();
+        if (MailFunctions.canConnect(MailFunctions.getImapHostFromEmail(mEmail), mEmail, mPassword) == Boolean.TRUE) {
+            //showToast("was able to connect");
+
+            List folders = MailFunctions.listMailboxes(MailFunctions.getIMAPConnection(MailFunctions.getImapHostFromEmail(mEmail), mEmail, mPassword));
+            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 p = MailFunctions.fetchMailsFromBox(
+                        MailFunctions.getIMAPConnection(
+                                MailFunctions.getImapHostFromEmail(mEmail), mEmail, mPassword),
+                        folders.get(i).toString());
+                System.out.println(folders.get(i).toString());
+                System.out.println(p);
+            }
+        }
+
+    }
+}

+ 8 - 110
app/src/main/python/mailFunctions.py

@@ -1,14 +1,7 @@
 import imaplib, smtplib, ssl, email, os, json
 from itertools import chain
 
-mSubject = ""
-mFrom = ""
-mCC = ""
-mBcc = ""
-mTo = ""
-mDate = ""
-mContent = ""
-output_list= []
+
 
 # format raw string you get from fetching mails
 def stringCompiling(inputIterable):
@@ -121,56 +114,6 @@ def fetchMails(connection, inbox):
     messages_int = int(messages[0])
     #print("message_int------\n" + str(messages_int))
 
-    typ, data = connection.search(None, 'ALL')
-    global output_list
-
-    for num in data[0].split():
-        if outputType == "dict":
-            output_dict = {}
-        else:
-           inner_output_list =[]
-
-        typ, data = connection.fetch(num, '(RFC822)')
-        msg = email.message_from_bytes(data[0][1])
-
-        #print(msg)
-        #print(num)
-
-        raw_string = email.header.decode_header(msg['Subject'])[0]
-        #print("raw_string: " + str(raw_string))
-        raw_from = email.header.decode_header(msg['From'])
-        #print("raw_from" + str(raw_from))
-        try:
-            raw_to = email.header.decode_header(msg['To'])
-        except TypeError:
-            raw_to = [""]
-        try:
-            raw_cc = email.header.decode_header(msg['CC'])
-        except TypeError:
-            raw_cc = [""]
-        try:
-            raw_bcc = email.header.decode_header(msg['BCC'])
-        except TypeError:
-            raw_bcc = [""]
-        #print("raw_to" + str(raw_to))
-        raw_date = email.header.decode_header(msg['Date'])[0]
-        #print("raw_to" + str(raw_date))
-
-        raw_msg = str(msg)
-
-        primitive_body = raw_msg[raw_msg.find('\n\n'):].strip()
-
-        #raw_body = email.header.decode_header(msg['Body'])[0][0]
-
-        # set subject to an empty string when not found
-        try:
-            if raw_string[1] == 'utf-8':
-                subject = raw_string[0].raw_string('utf-8')
-            else:
-                subject = raw_string[0]
-        except AttributeError:
-            subject=""
-
     output_list = []
 
     for seentype in ['(UNSEEN)', '(SEEN)']:
@@ -233,7 +176,7 @@ def fetchMails(connection, inbox):
                 # make sure the fetch command doesn't add a SEEN flag
                 connection.store(num, '-FLAGS', '(\Seen)')
 
-        if outputType == "dict":
+
             output_dict['subject'] = subject
             output_dict['from'] = stringCompiling(raw_from)
             output_dict['cc'] = stringCompiling(raw_cc)
@@ -241,28 +184,12 @@ def fetchMails(connection, inbox):
             output_dict['to'] = stringCompiling(raw_to)
             output_dict['date'] = stringCompiling(raw_date)
             output_dict['content'] = primitive_body
-
-            output_list.append(output_dict)
-        else:
-            inner_output_list.append(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_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
+            if seentype == '(SEEN)':
+                output_dict['seen'] = "True"
+            else:
+                output_dict['seen'] = "False"
+                # make sure the fetch command doesn't add a SEEN flag
+                connection.store(num, '-FLAGS', '(\Seen)')
 
             output_list.append(output_dict)
 
@@ -276,35 +203,6 @@ def fetchMails(connection, inbox):
 
     return json.dumps(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()