MailFunctions.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.noahvogt.miniprojekt;
  2. import android.util.Patterns;
  3. import android.widget.EditText;
  4. import com.chaquo.python.PyObject;
  5. import com.chaquo.python.Python;
  6. import java.util.List;
  7. public class MailFunctions {
  8. public static boolean canConnect(String host, String email, String password) {
  9. Python python = Python.getInstance();
  10. PyObject pythonMailFunctions = python.getModule("mailFunctions");
  11. return pythonMailFunctions.callAttr("checkConnection", host, email, password, 993).toBoolean();
  12. }
  13. public static void sendStarttlsMail(String host, String sendingMail, String receivingMail, String password, String message, String subject, String cc, String bcc) {
  14. Python python = Python.getInstance();
  15. PyObject pythonMailFunctions = python.getModule("mailFunctions");
  16. pythonMailFunctions.callAttr("sendStarttls", host, sendingMail, receivingMail, password, message, subject, 587, cc, bcc);
  17. }
  18. public static PyObject getIMAPConnection(String host, String email, String password) {
  19. Python python = Python.getInstance();
  20. PyObject pythonMailFunctions = python.getModule("mailFunctions");
  21. return pythonMailFunctions.callAttr("connect", host, email, password, 993);
  22. }
  23. public static List listMailboxes(PyObject IMAPConnection) {
  24. Python python = Python.getInstance();
  25. PyObject pythonMailFunctions = python.getModule("mailFunctions");
  26. return pythonMailFunctions.callAttr("listMailboxes", IMAPConnection).asList();
  27. }
  28. public static List fetchMailsFromBox(PyObject IMAPConnection, String Folder, String InputType) {
  29. Python python = Python.getInstance();
  30. PyObject pythonMailFunctions = python.getModule("mailFunctions");
  31. return pythonMailFunctions.callAttr("fetchMails", IMAPConnection, Folder).asList();
  32. }
  33. public static boolean validateName(EditText emailName) {
  34. String name = emailName.getText().toString().trim();
  35. if (name.isEmpty()) {
  36. emailName.setError("Field can't be empty");
  37. return false;
  38. } else if (name.length() > 50) {
  39. emailName.setError("Name too long");
  40. return false;
  41. } else {
  42. emailName.setError(null);
  43. return true;
  44. }
  45. }
  46. public static String getImapHostFromEmail(String email) {
  47. String topLevelHost = email.substring(email.lastIndexOf("@") + 1);
  48. if (topLevelHost.endsWith("edubs.ch")) {
  49. return "teamwork.edubs.ch";
  50. } else {
  51. return "imap." + topLevelHost;
  52. }
  53. }
  54. public static String getSmtpHostFromEmail(String email) {
  55. String topLevelHost = email.substring(email.lastIndexOf("@") + 1);
  56. if (topLevelHost.equals("noahvogt.com")) {
  57. return "mail.noahvogt.com";
  58. } else {
  59. return "smtp." + topLevelHost;
  60. }
  61. }
  62. public static boolean validateEmail(EditText emailAddress) {
  63. String email = emailAddress.getText().toString().trim();
  64. if (email.isEmpty()) {
  65. emailAddress.setError("Field can't be empty");
  66. return false;
  67. } else if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
  68. emailAddress.setError("Please enter a valid email address");
  69. return false;
  70. } else {
  71. emailAddress.setError(null);
  72. return true;
  73. }
  74. }
  75. public static boolean validatePassword(EditText emailPassword) {
  76. String password = emailPassword.getText().toString().trim();
  77. if (password.isEmpty()) {
  78. emailPassword.setError("Field can't be empty");
  79. return false;
  80. } else {
  81. emailPassword.setError(null);
  82. return true;
  83. }
  84. }
  85. public static boolean validateSubject(EditText emailSubject) {
  86. String subject = emailSubject.getText().toString();
  87. /* TODO: check email protocol specification for what is allowed for subjects */
  88. return true;
  89. }
  90. public static boolean validateMessageBody(EditText emailMessageBody) {
  91. String messageBody = emailMessageBody.getText().toString();
  92. /* TODO: check email protocol specification for what is allowed for message bodies */
  93. return true;
  94. }
  95. public static boolean checkForSameEmail(EditText firstAddress, EditText secondAddress) {
  96. String firstEmail = firstAddress.getText().toString();
  97. String secondEmail = secondAddress.getText().toString();
  98. if (firstEmail.equals(secondEmail)) {
  99. firstAddress.setError("Fields cannot be the same");
  100. secondAddress.setError("Fields cannot be the same");
  101. return true;
  102. } else {
  103. firstAddress.setError(null);
  104. secondAddress.setError(null);
  105. return false;
  106. }
  107. }
  108. }