Răsfoiți Sursa

now cc + bcc sending funcionality fully working

Noah Vogt 3 ani în urmă
părinte
comite
6337308ccc

+ 2 - 2
app/src/main/java/com/noahvogt/miniprojekt/mailFunctions.java

@@ -17,10 +17,10 @@ public class mailFunctions {
         return pythonMailFunctions.callAttr("checkConnection", host, email, password, 993).toBoolean();
     }
 
-    public static void sendStarttlsMail(String host, String sendingMail, String receivingMail, String password, String message, String subject) {
+    public static void sendStarttlsMail(String host, String sendingMail, String receivingMail, String password, String message, String subject, String cc, String bcc) {
         Python python = Python.getInstance();
         PyObject pythonMailFunctions = python.getModule("mailFunctions");
-        pythonMailFunctions.callAttr("sendStarttls", host, sendingMail, receivingMail, password, message, subject, 587);
+        pythonMailFunctions.callAttr("sendStarttls", host, sendingMail, receivingMail, password, message, subject, 587, cc, bcc);
         return;
     }
 

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

@@ -23,6 +23,8 @@ import androidx.annotation.Nullable;
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.DialogFragment;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
@@ -38,6 +40,8 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
     public EditText receivingAddressObject;
     public EditText subjectObject;
     public EditText messageBodyObject;
+    public EditText ccObject;
+    public EditText bccObject;
 
     public static final int RESULT_CANCELED = 0;
     public static final int RESULT_OK = -1;
@@ -79,6 +83,8 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
 
          sendingAddressObject = (EditText) view.findViewById(R.id.create_message_sending_address_text);
          receivingAddressObject = (EditText) view.findViewById(R.id.create_message_receiving_address_text);
+         ccObject = (EditText) view.findViewById(R.id.create_message_cc_text);
+         bccObject = (EditText) view.findViewById(R.id.create_message_bcc_text);
          subjectObject = (EditText) view.findViewById(R.id.create_message_subject_text);
          messageBodyObject = (EditText) view.findViewById(R.id.create_message_body_text);
 
@@ -130,6 +136,8 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
                                     String to = receivingAddressObject.getText().toString();
                                     String subject = subjectObject.getText().toString();
                                     String message = messageBodyObject.getText().toString();
+                                    String cc = ccObject.getText().toString();
+                                    String bcc = bccObject.getText().toString();
 
 
                                     replyIntent.putExtra(EXTRA_FROM, from);
@@ -189,13 +197,15 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
                 String receivingAddress = receivingAddressObject.getText().toString();
                 String subject = subjectObject.getText().toString();
                 String messageBody = messageBodyObject.getText().toString();
+                String ccStr = ccObject.getText().toString();
+                String bccStr = bccObject.getText().toString();
 
                 /* check for valid input */
                 if (mailFunctions.validateMessageBody(messageBodyObject) && mailFunctions.validateSubject(subjectObject) &&
                 mailFunctions.validateEmail(receivingAddressObject) && mailFunctions.validateEmail(sendingAddressObject) &&
                 !mailFunctions.checkForSameEmail(sendingAddressObject, receivingAddressObject)) {
                     String password = preferences.getString("password","");
-                    mailFunctions.sendStarttlsMail("smtp.edubs.ch", sendingAddress, receivingAddress, password, messageBody, subject);
+                    mailFunctions.sendStarttlsMail("smtp.edubs.ch", sendingAddress, receivingAddress, password, messageBody, subject, ccStr, bccStr);
                     Toast.makeText(getActivity(), "sending ... ", Toast.LENGTH_SHORT).show();
                     dismiss();
                 } else {

+ 5 - 1
app/src/main/python/mailFunctions.py

@@ -96,7 +96,11 @@ def fetchMails(connection, inbox):
 def sendStarttls(host, sendingMail, receivingMail, password, message="", subject="", port=587, cc=[], bcc=[]):
     context = ssl.create_default_context()
 
-    utf8Message = "Subject: " + subject + "\nCC: " + ",".join(cc) + "\nBCC: " + ",".join(bcc) + "\n\n" + message
+    if type(cc) is not str:
+        cc = ",".join(cc)
+    if type(bcc) is not str:
+        bcc = ",".join(bcc)
+    utf8Message = "Subject: " + subject + "\nCC: " + cc + "\nBCC: " + bcc + "\n\n" + message
     decoded=utf8Message.encode('cp1252').decode('utf-8')
 
     with smtplib.SMTP(host, port) as serverConnection:

+ 48 - 0
app/src/main/res/layout/message_create_fragment.xml

@@ -148,6 +148,54 @@
                     android:hint="@string/hint_email_to" />
             </com.google.android.material.textfield.TextInputLayout>
 
+            <com.google.android.material.textfield.TextInputLayout
+                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
+                android:id="@+id/create_message_cc_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+
+                android:layout_marginStart="12dp"
+                android:layout_marginLeft="12dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginEnd="12dp"
+                android:layout_marginRight="12dp"
+                android:layout_marginBottom="12dp"
+
+                app:layout_constraintTop_toBottomOf="@+id/create_message_sending_address_layout"
+                tools:layout_editor_absoluteX="1dp">
+
+                <com.google.android.material.textfield.TextInputEditText
+                    android:id="@+id/create_message_cc_text"
+                    android:inputType="textEmailAddress"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="CC ..." />
+            </com.google.android.material.textfield.TextInputLayout>
+
+            <com.google.android.material.textfield.TextInputLayout
+                style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
+                android:id="@+id/create_message_bcc_layout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+
+                android:layout_marginStart="12dp"
+                android:layout_marginLeft="12dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginEnd="12dp"
+                android:layout_marginRight="12dp"
+                android:layout_marginBottom="12dp"
+
+                app:layout_constraintTop_toBottomOf="@+id/create_message_sending_address_layout"
+                tools:layout_editor_absoluteX="1dp">
+
+                <com.google.android.material.textfield.TextInputEditText
+                    android:id="@+id/create_message_bcc_text"
+                    android:inputType="textEmailAddress"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:hint="BCC ..." />
+            </com.google.android.material.textfield.TextInputLayout>
+
     <com.google.android.material.textfield.TextInputLayout
         style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
         android:id="@+id/create_message_subject_layout"