From 4e88587b1390b8ebd7af194b61676518b4f025e3 Mon Sep 17 00:00:00 2001 From: jens Date: Sun, 11 Oct 2026 21:33:13 +0200 Subject: [PATCH] send emails --- app/build.gradle | 2 +- .../jens/automation2/AutomationService.java | 47 ++++++++-------- .../java/com/jens/automation2/Settings.java | 53 +++++++++++++++++++ app/src/main/res/layout/activity_settings.xml | 47 ++++++++++++++++ app/src/main/res/values/strings.xml | 15 ++++++ 5 files changed, 141 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 890db78..ac8272b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,7 +66,7 @@ android { buildToolsVersion '36.0.0' } - { +dependencies { implementation 'org.jetbrains:annotations:26.1.0' googlePlayFlavorImplementation 'com.google.firebase:firebase-appindexing:20.0.0' googlePlayFlavorImplementation 'com.google.android.gms:play-services-location:20.0.0' diff --git a/app/src/main/java/com/jens/automation2/AutomationService.java b/app/src/main/java/com/jens/automation2/AutomationService.java index e5818b6..160c82a 100644 --- a/app/src/main/java/com/jens/automation2/AutomationService.java +++ b/app/src/main/java/com/jens/automation2/AutomationService.java @@ -7,14 +7,12 @@ import android.annotation.SuppressLint; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.app.Notification; -import android.app.Notification.Builder; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; -import android.content.pm.ServiceInfo; import android.media.AudioManager; import android.os.Binder; import android.os.Build; @@ -37,7 +35,6 @@ import com.jens.automation2.receivers.DateTimeListener; import com.jens.automation2.receivers.PackageReplacedReceiver; import com.jens.automation2.receivers.PhoneStatusListener; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; @@ -45,8 +42,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import javax.mail.Address; -import javax.mail.Authenticator; import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; @@ -439,24 +434,32 @@ public class AutomationService extends Service implements OnInitListener Settings.writeSettings(Miscellaneous.getAnyContext()); } - StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build()); - EmailService es = new EmailService(Settings.smtpServerName, Integer.parseInt(Settings.smtpServerPort)); +// try +// { + StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build()); + EmailService es = new EmailService(Settings.smtpServerHostname, Integer.parseInt(Settings.smtpServerPort)); - List addresses = new ArrayList(); - addresses.add(Settings.smtpFromAddress); - try - { - EmailService.Email em = new EmailService.Email(new EmailService.UserPassAuthenticator(Settings.smtpUsername, Settings.smtpPassword), addresses, new InternetAddress(String.valueOf(addresses.get(0))), "test", "testbody"); - es.send(em); - } - catch (AddressException e) - { - throw new RuntimeException(e); - } - catch (MessagingException e) - { - throw new RuntimeException(e); - } + List addresses = new ArrayList(); + addresses.add(Settings.smtpFromAddress); + try + { + EmailService.Email em = new EmailService.Email(new EmailService.UserPassAuthenticator(Settings.smtpUsername, Settings.smtpPassword), addresses, new InternetAddress(String.valueOf(addresses.get(0))), "test", "testbody"); + es.send(em); + Miscellaneous.logEvent("i", "sendEmail()", "Email sent.", 1); + } + catch (AddressException e) + { + throw new RuntimeException(e); + } + catch (MessagingException e) + { + throw new RuntimeException(e); + } +// } +// catch(Exception e) +// { +// Miscellaneous.logEvent("e", "sendMail()", Log.getStackTraceString(e), 1); +// } Settings.serviceStartDone = true; Settings.deviceStartDone = true; diff --git a/app/src/main/java/com/jens/automation2/Settings.java b/app/src/main/java/com/jens/automation2/Settings.java index f44e3fd..60834d8 100644 --- a/app/src/main/java/com/jens/automation2/Settings.java +++ b/app/src/main/java/com/jens/automation2/Settings.java @@ -73,6 +73,14 @@ public class Settings implements SharedPreferences public static long musicCheckFrequency; public static String displayLanguage; + public static String smtpServerHostname; + public static String smtpServerPort; + public static boolean smtpServerUseTls; + public static String smtpFromAddress; + public static String smtpToAddress; + public static String smtpUsername; + public static String smtpPassword; + public static boolean lockSoundChanges; public static boolean noticeAndroid9MicrophoneShown; public static boolean noticeAndroid10WifiShown; @@ -146,6 +154,14 @@ public class Settings implements SharedPreferences public static final long default_musicCheckFrequency = 2500; public static final String default_displayLanguage = "systemDefaultLanguage"; + public static final String default_smtpServerHostname = ""; + public static final String default_smtpServerPort = "587"; + public static final boolean default_smtpServerUseTls = false; + public static final String default_smtpFromAddress = ""; + public static final String default_smtpToAddress = ""; + public static final String default_smtpUsername = ""; + public static final String default_smtpPassword = ""; + @Override public boolean contains(String arg0) { @@ -273,6 +289,14 @@ public class Settings implements SharedPreferences musicCheckFrequency = Long.parseLong(prefs.getString("musicCheckFrequency", String.valueOf(default_musicCheckFrequency))); displayLanguage = prefs.getString("displayLanguage", default_displayLanguage); + smtpServerHostname = prefs.getString("smtpServerHostname", default_smtpServerHostname); + smtpServerPort = prefs.getString("smtpServerPort", default_smtpServerPort); + smtpServerUseTls = prefs.getBoolean("smtpServerUseTls", default_smtpServerUseTls); + smtpFromAddress = prefs.getString("smtpFromAddress", default_smtpFromAddress); + smtpToAddress = prefs.getString("smtpToAddress", default_smtpToAddress); + smtpUsername = prefs.getString("smtpUsername", default_smtpUsername); + smtpPassword = prefs.getString("smtpPassword", default_smtpPassword); + if(Settings.musicCheckFrequency == 0) Settings.musicCheckFrequency = Settings.default_musicCheckFrequency; @@ -490,6 +514,27 @@ public class Settings implements SharedPreferences if(!prefs.contains("displayLanguage") || force) editor.putString("displayLanguage", default_displayLanguage); + if(!prefs.contains("smtpServerHostname") || force) + editor.putString("smtpServerHostname", default_smtpServerHostname); + + if(!prefs.contains("smtpServerPort") || force) + editor.putString("smtpServerPort", default_smtpServerPort); + + if(!prefs.contains("smtpServerUseTls") || force) + editor.putBoolean("smtpServerUseTls", default_smtpServerUseTls); + + if(!prefs.contains("smtpFromAddress") || force) + editor.putString("smtpFromAddress", default_smtpFromAddress); + + if(!prefs.contains("smtpToAddress") || force) + editor.putString("smtpToAddress", default_smtpToAddress); + + if(!prefs.contains("smtpUsername") || force) + editor.putString("smtpUsername", default_smtpUsername); + + if(!prefs.contains("smtpPassword") || force) + editor.putString("smtpPassword", default_smtpPassword); + if(!prefs.contains("lockSoundChanges") || force) editor.putBoolean("lockSoundChanges", default_lockSoundChanges); @@ -580,6 +625,14 @@ public class Settings implements SharedPreferences editor.putString("displayLanguage", displayLanguage); + editor.putString("smtpServerHostname", smtpServerHostname); + editor.putString("smtpServerPort", smtpServerPort); + editor.putBoolean("smtpServerUseTls", smtpServerUseTls); + editor.putString("smtpFromAddress", smtpFromAddress); + editor.putString("smtpToAddress", smtpToAddress); + editor.putString("smtpUsername", smtpUsername); + editor.putString("smtpPassword", smtpPassword); + editor.putBoolean("lockSoundChanges", lockSoundChanges); editor.putBoolean("noticeAndroid9MicrophoneShown", noticeAndroid9MicrophoneShown); editor.putBoolean("noticeAndroid10WifiShown", noticeAndroid10WifiShown); diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 70c0d99..2f46c20 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -307,5 +307,52 @@ android:inputType="number" /> + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a4f20e9..1c02bfb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -980,4 +980,19 @@ If any parameter name starts with %1$s while method is POST, it will not be transmitted like the other parameters (with key=value), but transferred as main data. If the parameter ends with %2$s, no encoding will be performed. Target Enter a valid URL. + Email server settings + Hostname + SMTP server hostname + Port + SMTP server port + Use TLS + Use TLS for connection to SMTP server + From address + Sender address emails (from) + Recipient address + Recipient address for emails (to) + Username + Leave empty for no authentication + Password + If username is empty, no authentication is used. \ No newline at end of file