Jelajahi Sumber

sending functionality works, but only with ascii chars

Noah Vogt 3 tahun lalu
induk
melakukan
00eaefdd54

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

@@ -17,6 +17,13 @@ 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) {
+        Python python = Python.getInstance();
+        PyObject pythonMailFunctions = python.getModule("mailFunctions");
+        pythonMailFunctions.callAttr("sendStarttls", host, sendingMail, receivingMail, password, message, subject, 587);
+        return;
+    }
+
     public static PyObject getIMAPConnection(String host, String email, String password) {
         Python python = Python.getInstance();
         PyObject pythonMailFunctions = python.getModule("mailFunctions");

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

@@ -194,6 +194,8 @@ public class messageCreateFragment extends DialogFragment implements PopupMenu.O
                 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);
                     Toast.makeText(getActivity(), "sending ... ", Toast.LENGTH_SHORT).show();
                     dismiss();
                 } else {

+ 12 - 2
app/src/main/python/mailFunctions.py

@@ -1,4 +1,4 @@
-import imaplib, email, os
+import imaplib, smtplib, ssl, email, os
 
 def errorMsgExit(error_msg):
     print("Error: " + error_msg)
@@ -44,7 +44,7 @@ def fetchMails(connection, inbox):
     print("status-------\n" + status)
     print("messages-------\n" + str(messages))
     # number of top emails to fetch
-    N = 3
+    #N = 3
     # total number of emails
     messages_int = int(messages[0])
     print("message_int------\n" + str(messages_int))
@@ -93,6 +93,16 @@ def fetchMails(connection, inbox):
 
     return output_list
 
+def sendStarttls(host, sendingMail, receivingMail, password, message, subject, port):
+    context = ssl.create_default_context()
+    utf8Message = "Subject: " + subject + "\n\n" + message
+    decoded=utf8Message.encode('cp1252').decode('utf-8')
+
+    with smtplib.SMTP(host, port) as serverConnection:
+        serverConnection.starttls(context=context)
+        serverConnection.login(sendingMail, password)
+        serverConnection.sendmail(sendingMail, receivingMail, decoded)
+
 def afetchMails(con):
     con.select("Sent")
     status, email_ids = con.search(None, "ALL")