diff --git a/pom.xml b/pom.xml
index 500ce15f0..516bdaffc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,6 +99,30 @@
3.0.1
+
+
+ org.springframework
+ spring-core
+ 4.3.5.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-context
+ 4.3.5.RELEASE
+ compile
+ true
+
+
+ org.springframework
+ spring-beans
+ 4.3.5.RELEASE
+ compile
+ true
+
+
+
junit
diff --git a/src/main/java/org/simplejavamail/email/Email.java b/src/main/java/org/simplejavamail/email/Email.java
index a6f370b24..53a095bac 100644
--- a/src/main/java/org/simplejavamail/email/Email.java
+++ b/src/main/java/org/simplejavamail/email/Email.java
@@ -15,9 +15,9 @@
import java.util.regex.Pattern;
import static java.lang.String.format;
-import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
-import static org.simplejavamail.internal.util.ConfigLoader.getProperty;
-import static org.simplejavamail.internal.util.ConfigLoader.hasProperty;
+import static org.simplejavamail.util.ConfigLoader.Property.*;
+import static org.simplejavamail.util.ConfigLoader.getProperty;
+import static org.simplejavamail.util.ConfigLoader.hasProperty;
/**
* Email message with all necessary data for an effective mailing action, including attachments etc.
diff --git a/src/main/java/org/simplejavamail/email/EmailBuilder.java b/src/main/java/org/simplejavamail/email/EmailBuilder.java
index 0169acbcd..c40eb6516 100644
--- a/src/main/java/org/simplejavamail/email/EmailBuilder.java
+++ b/src/main/java/org/simplejavamail/email/EmailBuilder.java
@@ -12,9 +12,9 @@
import java.util.Map;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
-import static org.simplejavamail.internal.util.ConfigLoader.getProperty;
-import static org.simplejavamail.internal.util.ConfigLoader.hasProperty;
+import static org.simplejavamail.util.ConfigLoader.Property.*;
+import static org.simplejavamail.util.ConfigLoader.getProperty;
+import static org.simplejavamail.util.ConfigLoader.hasProperty;
/**
* Fluent interface Builder for Emails
diff --git a/src/main/java/org/simplejavamail/mailer/Mailer.java b/src/main/java/org/simplejavamail/mailer/Mailer.java
index 6d31c303d..a071d0c5a 100644
--- a/src/main/java/org/simplejavamail/mailer/Mailer.java
+++ b/src/main/java/org/simplejavamail/mailer/Mailer.java
@@ -21,9 +21,9 @@
import static java.lang.String.format;
import static org.hazlewood.connor.bottema.emailaddress.EmailAddressCriteria.RFC_COMPLIANT;
-import static org.simplejavamail.internal.util.ConfigLoader.Property.JAVAXMAIL_DEBUG;
-import static org.simplejavamail.internal.util.ConfigLoader.Property.TRANSPORT_STRATEGY;
-import static org.simplejavamail.internal.util.ConfigLoader.*;
+import static org.simplejavamail.util.ConfigLoader.Property.JAVAXMAIL_DEBUG;
+import static org.simplejavamail.util.ConfigLoader.Property.TRANSPORT_STRATEGY;
+import static org.simplejavamail.util.ConfigLoader.*;
import static org.simplejavamail.mailer.config.TransportStrategy.findStrategyForSession;
/**
diff --git a/src/main/java/org/simplejavamail/mailer/config/ProxyConfig.java b/src/main/java/org/simplejavamail/mailer/config/ProxyConfig.java
index 383c0b501..0328137c9 100644
--- a/src/main/java/org/simplejavamail/mailer/config/ProxyConfig.java
+++ b/src/main/java/org/simplejavamail/mailer/config/ProxyConfig.java
@@ -3,8 +3,8 @@
import org.simplejavamail.mailer.internal.socks.SocksProxyConfig;
import static java.lang.String.format;
-import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
-import static org.simplejavamail.internal.util.ConfigLoader.valueOrProperty;
+import static org.simplejavamail.util.ConfigLoader.Property.*;
+import static org.simplejavamail.util.ConfigLoader.valueOrProperty;
import static org.simplejavamail.internal.util.MiscUtil.checkArgumentNotEmpty;
import static org.simplejavamail.internal.util.MiscUtil.valueNullOrEmpty;
diff --git a/src/main/java/org/simplejavamail/mailer/config/ServerConfig.java b/src/main/java/org/simplejavamail/mailer/config/ServerConfig.java
index dc14eaf42..d4b4b41cf 100644
--- a/src/main/java/org/simplejavamail/mailer/config/ServerConfig.java
+++ b/src/main/java/org/simplejavamail/mailer/config/ServerConfig.java
@@ -1,8 +1,8 @@
package org.simplejavamail.mailer.config;
import static java.lang.String.format;
-import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
-import static org.simplejavamail.internal.util.ConfigLoader.valueOrProperty;
+import static org.simplejavamail.util.ConfigLoader.Property.*;
+import static org.simplejavamail.util.ConfigLoader.valueOrProperty;
import static org.simplejavamail.internal.util.MiscUtil.checkArgumentNotEmpty;
import static org.simplejavamail.internal.util.MiscUtil.valueNullOrEmpty;
diff --git a/src/main/java/org/simplejavamail/mailer/internal/mailsender/MailSender.java b/src/main/java/org/simplejavamail/mailer/internal/mailsender/MailSender.java
index 211f696a2..4f0b3bfd5 100644
--- a/src/main/java/org/simplejavamail/mailer/internal/mailsender/MailSender.java
+++ b/src/main/java/org/simplejavamail/mailer/internal/mailsender/MailSender.java
@@ -2,8 +2,8 @@
import org.simplejavamail.MailException;
import org.simplejavamail.email.Email;
-import org.simplejavamail.internal.util.ConfigLoader;
-import org.simplejavamail.internal.util.ConfigLoader.Property;
+import org.simplejavamail.util.ConfigLoader;
+import org.simplejavamail.util.ConfigLoader.Property;
import org.simplejavamail.mailer.config.ProxyConfig;
import org.simplejavamail.mailer.config.TransportStrategy;
import org.simplejavamail.mailer.internal.socks.AuthenticatingSocks5Bridge;
diff --git a/src/main/java/org/simplejavamail/internal/util/ConfigLoader.java b/src/main/java/org/simplejavamail/util/ConfigLoader.java
similarity index 99%
rename from src/main/java/org/simplejavamail/internal/util/ConfigLoader.java
rename to src/main/java/org/simplejavamail/util/ConfigLoader.java
index 18f6d699f..e0bbf48e0 100644
--- a/src/main/java/org/simplejavamail/internal/util/ConfigLoader.java
+++ b/src/main/java/org/simplejavamail/util/ConfigLoader.java
@@ -1,4 +1,4 @@
-package org.simplejavamail.internal.util;
+package org.simplejavamail.util;
import org.simplejavamail.mailer.config.TransportStrategy;
import org.slf4j.Logger;
diff --git a/src/main/java/org/simplejavamail/util/SimpleJavaMailSpringSupport.java b/src/main/java/org/simplejavamail/util/SimpleJavaMailSpringSupport.java
new file mode 100644
index 000000000..5d2764d7c
--- /dev/null
+++ b/src/main/java/org/simplejavamail/util/SimpleJavaMailSpringSupport.java
@@ -0,0 +1,78 @@
+package org.simplejavamail.util;
+
+import org.simplejavamail.mailer.Mailer;
+import org.simplejavamail.util.ConfigLoader.Property;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Properties;
+
+@Configuration
+public class SimpleJavaMailSpringSupport {
+
+ @Bean
+ public Mailer loadGlobalConfigAndCreateDefaultMailer(
+ // now obviously there are easier ways to do this, but this is the only way
+ // I can think of that actually works accross Spring versions
+ @Value("${simplejavamail.javaxmail.debug:#{null}}") String javaxmailDebug,
+ @Value("${simplejavamail.transportstrategy:#{null}}") String transportstrategy,
+ @Value("${simplejavamail.smtp.host:#{null}}") String smtpHost,
+ @Value("${simplejavamail.smtp.port:#{null}}") String smtpPort,
+ @Value("${simplejavamail.smtp.username:#{null}}") String smtpUsername,
+ @Value("${simplejavamail.smtp.password:#{null}}") String smtpPassword,
+ @Value("${simplejavamail.proxy.host:#{null}}") String proxyHost,
+ @Value("${simplejavamail.proxy.port:#{null}}") String proxyPort,
+ @Value("${simplejavamail.proxy.username:#{null}}") String proxyUsername,
+ @Value("${simplejavamail.proxy.password:#{null}}") String proxyPassword,
+ @Value("${simplejavamail.proxy.socks5bridge.port:#{null}}") String proxySocks5bridgePort,
+ @Value("${simplejavamail.defaults.subject:#{null}}") String defaultSubject,
+ @Value("${simplejavamail.defaults.from.name:#{null}}") String defaultFromName,
+ @Value("${simplejavamail.defaults.from.address:#{null}}") String defaultFromAddress,
+ @Value("${simplejavamail.defaults.replyto.name:#{null}}") String defaultReplytoName,
+ @Value("${simplejavamail.defaults.replyto.address:#{null}}") String defaultReplytoAddress,
+ @Value("${simplejavamail.defaults.to.name:#{null}}") String defaultToName,
+ @Value("${simplejavamail.defaults.to.address:#{null}}") String defaultToAddress,
+ @Value("${simplejavamail.defaults.cc.name:#{null}}") String defaultCcName,
+ @Value("${simplejavamail.defaults.cc.address:#{null}}") String defaultCcAddress,
+ @Value("${simplejavamail.defaults.bcc.name:#{null}}") String defaultBccName,
+ @Value("${simplejavamail.defaults.bcc.address:#{null}}") String defaultBccAddress,
+ @Value("${simplejavamail.defaults.poolsize:#{null}}") String defaultPoolsize) {
+ Properties emailProperties = new Properties();
+ setNullableProperty(emailProperties, Property.JAVAXMAIL_DEBUG.key(), javaxmailDebug);
+ setNullableProperty(emailProperties, Property.TRANSPORT_STRATEGY.key(), transportstrategy);
+ setNullableProperty(emailProperties, Property.SMTP_HOST.key(), smtpHost);
+ setNullableProperty(emailProperties, Property.SMTP_PORT.key(), smtpPort);
+ setNullableProperty(emailProperties, Property.SMTP_USERNAME.key(), smtpUsername);
+ setNullableProperty(emailProperties, Property.SMTP_PASSWORD.key(), smtpPassword);
+ setNullableProperty(emailProperties, Property.PROXY_HOST.key(), proxyHost);
+ setNullableProperty(emailProperties, Property.PROXY_PORT.key(), proxyPort);
+ setNullableProperty(emailProperties, Property.PROXY_USERNAME.key(), proxyUsername);
+ setNullableProperty(emailProperties, Property.PROXY_PASSWORD.key(), proxyPassword);
+ setNullableProperty(emailProperties, Property.PROXY_SOCKS5BRIDGE_PORT.key(), proxySocks5bridgePort);
+ setNullableProperty(emailProperties, Property.DEFAULT_SUBJECT.key(), defaultSubject);
+ setNullableProperty(emailProperties, Property.DEFAULT_FROM_NAME.key(), defaultFromName);
+ setNullableProperty(emailProperties, Property.DEFAULT_FROM_ADDRESS.key(), defaultFromAddress);
+ setNullableProperty(emailProperties, Property.DEFAULT_REPLYTO_NAME.key(), defaultReplytoName);
+ setNullableProperty(emailProperties, Property.DEFAULT_REPLYTO_ADDRESS.key(), defaultReplytoAddress);
+ setNullableProperty(emailProperties, Property.DEFAULT_TO_NAME.key(), defaultToName);
+ setNullableProperty(emailProperties, Property.DEFAULT_TO_ADDRESS.key(), defaultToAddress);
+ setNullableProperty(emailProperties, Property.DEFAULT_CC_NAME.key(), defaultCcName);
+ setNullableProperty(emailProperties, Property.DEFAULT_CC_ADDRESS.key(), defaultCcAddress);
+ setNullableProperty(emailProperties, Property.DEFAULT_BCC_NAME.key(), defaultBccName);
+ setNullableProperty(emailProperties, Property.DEFAULT_BCC_ADDRESS.key(), defaultBccAddress);
+ setNullableProperty(emailProperties, Property.DEFAULT_POOL_SIZE.key(), defaultPoolsize);
+
+ ConfigLoader.loadProperties(emailProperties, true);
+
+ // this will configure itself with the global config and is read to use
+ // ofcourse this is optional simply as a convenience default
+ return new Mailer();
+ }
+
+ private void setNullableProperty(Properties emailProperties, String key, String value) {
+ if (value != null) {
+ emailProperties.setProperty(key, value);
+ }
+ }
+}
diff --git a/src/test/java/org/simplejavamail/email/EmailTest.java b/src/test/java/org/simplejavamail/email/EmailTest.java
index 12e65c802..3c526910b 100644
--- a/src/test/java/org/simplejavamail/email/EmailTest.java
+++ b/src/test/java/org/simplejavamail/email/EmailTest.java
@@ -2,12 +2,9 @@
import org.junit.Before;
import org.junit.Test;
-import org.simplejavamail.internal.util.ConfigLoader;
-import org.simplejavamail.mailer.Mailer;
+import org.simplejavamail.util.ConfigLoader;
import testutil.ConfigLoaderTestHelper;
-import testutil.EmailHelper;
-import javax.mail.internet.MimeMessage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
diff --git a/src/test/java/org/simplejavamail/mailer/MailerTest.java b/src/test/java/org/simplejavamail/mailer/MailerTest.java
index 2cf3b200b..974f79433 100644
--- a/src/test/java/org/simplejavamail/mailer/MailerTest.java
+++ b/src/test/java/org/simplejavamail/mailer/MailerTest.java
@@ -4,7 +4,7 @@
import org.junit.Before;
import org.junit.Test;
import org.simplejavamail.email.Email;
-import org.simplejavamail.internal.util.ConfigLoader;
+import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.mailer.config.ProxyConfig;
import org.simplejavamail.mailer.config.ServerConfig;
import org.simplejavamail.mailer.config.TransportStrategy;
diff --git a/src/test/java/org/simplejavamail/mailer/ProxyConfigTest.java b/src/test/java/org/simplejavamail/mailer/ProxyConfigTest.java
index b90958149..e8c206866 100644
--- a/src/test/java/org/simplejavamail/mailer/ProxyConfigTest.java
+++ b/src/test/java/org/simplejavamail/mailer/ProxyConfigTest.java
@@ -2,7 +2,7 @@
import org.junit.Before;
import org.junit.Test;
-import org.simplejavamail.internal.util.ConfigLoader;
+import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.mailer.config.ProxyConfig;
import testutil.ConfigLoaderTestHelper;
diff --git a/src/test/java/org/simplejavamail/mailer/ServerConfigTest.java b/src/test/java/org/simplejavamail/mailer/ServerConfigTest.java
index 8f2a4d141..ab9f9b4d8 100644
--- a/src/test/java/org/simplejavamail/mailer/ServerConfigTest.java
+++ b/src/test/java/org/simplejavamail/mailer/ServerConfigTest.java
@@ -2,7 +2,7 @@
import org.junit.Before;
import org.junit.Test;
-import org.simplejavamail.internal.util.ConfigLoader;
+import org.simplejavamail.util.ConfigLoader;
import org.simplejavamail.mailer.config.ServerConfig;
import testutil.ConfigLoaderTestHelper;
diff --git a/src/test/java/org/simplejavamail/internal/util/ConfigLoaderTest.java b/src/test/java/org/simplejavamail/util/ConfigLoaderTest.java
similarity index 87%
rename from src/test/java/org/simplejavamail/internal/util/ConfigLoaderTest.java
rename to src/test/java/org/simplejavamail/util/ConfigLoaderTest.java
index 62677cea3..a7fae8a59 100644
--- a/src/test/java/org/simplejavamail/internal/util/ConfigLoaderTest.java
+++ b/src/test/java/org/simplejavamail/util/ConfigLoaderTest.java
@@ -1,9 +1,9 @@
-package org.simplejavamail.internal.util;
+package org.simplejavamail.util;
import org.junit.Before;
import org.junit.Test;
-import org.simplejavamail.internal.util.ConfigLoader.Property;
import org.simplejavamail.mailer.config.TransportStrategy;
+import org.simplejavamail.util.ConfigLoader.Property;
import testutil.ConfigLoaderTestHelper;
import java.io.ByteArrayInputStream;
@@ -13,8 +13,29 @@
import java.util.Properties;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.simplejavamail.internal.util.ConfigLoader.Property.*;
import static org.simplejavamail.mailer.config.TransportStrategy.SMTP_SSL;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_BCC_ADDRESS;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_BCC_NAME;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_CC_ADDRESS;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_CC_NAME;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_FROM_ADDRESS;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_FROM_NAME;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_REPLYTO_ADDRESS;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_REPLYTO_NAME;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_SUBJECT;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_TO_ADDRESS;
+import static org.simplejavamail.util.ConfigLoader.Property.DEFAULT_TO_NAME;
+import static org.simplejavamail.util.ConfigLoader.Property.JAVAXMAIL_DEBUG;
+import static org.simplejavamail.util.ConfigLoader.Property.PROXY_HOST;
+import static org.simplejavamail.util.ConfigLoader.Property.PROXY_PASSWORD;
+import static org.simplejavamail.util.ConfigLoader.Property.PROXY_PORT;
+import static org.simplejavamail.util.ConfigLoader.Property.PROXY_SOCKS5BRIDGE_PORT;
+import static org.simplejavamail.util.ConfigLoader.Property.PROXY_USERNAME;
+import static org.simplejavamail.util.ConfigLoader.Property.SMTP_HOST;
+import static org.simplejavamail.util.ConfigLoader.Property.SMTP_PASSWORD;
+import static org.simplejavamail.util.ConfigLoader.Property.SMTP_PORT;
+import static org.simplejavamail.util.ConfigLoader.Property.SMTP_USERNAME;
+import static org.simplejavamail.util.ConfigLoader.Property.TRANSPORT_STRATEGY;
public class ConfigLoaderTest {
diff --git a/src/test/java/testutil/ConfigLoaderTestHelper.java b/src/test/java/testutil/ConfigLoaderTestHelper.java
index 772b5330c..89e15cd9a 100644
--- a/src/test/java/testutil/ConfigLoaderTestHelper.java
+++ b/src/test/java/testutil/ConfigLoaderTestHelper.java
@@ -1,7 +1,7 @@
package testutil;
-import org.simplejavamail.internal.util.ConfigLoader;
-import org.simplejavamail.internal.util.ConfigLoader.Property;
+import org.simplejavamail.util.ConfigLoader;
+import org.simplejavamail.util.ConfigLoader.Property;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;