keycloak-memoizeit
Details
pom.xml 5(+5 -0)
diff --git a/pom.xml b/pom.xml
index e2ce419..e537f9b 100755
--- a/pom.xml
+++ b/pom.xml
@@ -226,6 +226,11 @@
<artifactId>javase</artifactId>
<version>2.2</version>
</dependency>
+ <dependency>
+ <groupId>com.icegreen</groupId>
+ <artifactId>greenmail</artifactId>
+ <version>1.3.1b</version>
+ </dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
services/pom.xml 5(+5 -0)
diff --git a/services/pom.xml b/services/pom.xml
index 02f2c8a..dce0df7 100755
--- a/services/pom.xml
+++ b/services/pom.xml
@@ -156,6 +156,11 @@
<version>3.6.6.Final</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.icegreen</groupId>
+ <artifactId>greenmail</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
<plugins>
diff --git a/services/src/main/java/org/keycloak/services/email/EmailSender.java b/services/src/main/java/org/keycloak/services/email/EmailSender.java
new file mode 100644
index 0000000..da91a85
--- /dev/null
+++ b/services/src/main/java/org/keycloak/services/email/EmailSender.java
@@ -0,0 +1,44 @@
+package org.keycloak.services.email;
+
+import java.util.Map.Entry;
+import java.util.Properties;
+
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+public class EmailSender {
+
+ private Properties properties;
+
+ public EmailSender() {
+ properties = new Properties();
+ for (Entry<Object, Object> e : System.getProperties().entrySet()) {
+ String key = (String) e.getKey();
+ if (key.startsWith("keycloak.mail.smtp.")) {
+ key = key.replace("keycloak.mail.smtp.", "mail.smtp.");
+ properties.put(key, e.getValue());
+ }
+ }
+ }
+
+ public void send(String address, String subject, String body) throws AddressException, MessagingException {
+
+ Session session = Session.getDefaultInstance(properties);
+
+ Message msg = new MimeMessage(session);
+ msg.setFrom(new InternetAddress(properties.getProperty("mail.smtp.from")));
+ msg.setSubject(subject);
+ msg.setText(body);
+ msg.saveChanges();
+
+ Transport transport = session.getTransport("smtp");
+ transport.connect(properties.getProperty("mail.smtp.user"), properties.getProperty("mail.smtp.password"));
+ transport.sendMessage(msg, new InternetAddress[] { new InternetAddress(address) });
+ }
+
+}
diff --git a/services/src/test/java/org/keycloak/services/email/EmailSenderTest.java b/services/src/test/java/org/keycloak/services/email/EmailSenderTest.java
new file mode 100644
index 0000000..a2f0961
--- /dev/null
+++ b/services/src/test/java/org/keycloak/services/email/EmailSenderTest.java
@@ -0,0 +1,55 @@
+package org.keycloak.services.email;
+
+import java.io.IOException;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.MimeMessage;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.icegreen.greenmail.util.GreenMail;
+import com.icegreen.greenmail.util.ServerSetup;
+
+public class EmailSenderTest {
+
+ private GreenMail greenMail;
+
+ @Before
+ public void before() {
+ ServerSetup setup = new ServerSetup(3025, "localhost", "smtp");
+
+ greenMail = new GreenMail(setup);
+ greenMail.start();
+
+ System.setProperty("keycloak.mail.smtp.from", "auto@keycloak.org");
+ System.setProperty("keycloak.mail.smtp.host", "localhost");
+ System.setProperty("keycloak.mail.smtp.port", "3025");
+ }
+
+ @After
+ public void after() throws InterruptedException {
+ if (greenMail != null) {
+ greenMail.stop();
+ }
+ }
+
+ @Test
+ public void sendMail() throws AddressException, MessagingException, IOException {
+ EmailSender emailSender = new EmailSender();
+ emailSender.send("test@test.com", "Test subject", "Test body");
+
+ MimeMessage[] receivedMessages = greenMail.getReceivedMessages();
+ Assert.assertEquals(1, receivedMessages.length);
+
+ MimeMessage msg = receivedMessages[0];
+ Assert.assertEquals(1, msg.getFrom().length);
+ Assert.assertEquals("auto@keycloak.org", msg.getFrom()[0].toString());
+ Assert.assertEquals("Test subject", msg.getSubject());
+ Assert.assertEquals("Test body", ((String) msg.getContent()).trim());
+ }
+
+}