diff --git a/sc-spi/.gitignore b/sc-spi/.gitignore
new file mode 100644
index 0000000..8c94bba
--- /dev/null
+++ b/sc-spi/.gitignore
@@ -0,0 +1,4 @@
+.idea
+target/
+*.log
+.DS_Store
diff --git a/sc-spi/README.md b/sc-spi/README.md
new file mode 100644
index 0000000..667ff1f
--- /dev/null
+++ b/sc-spi/README.md
@@ -0,0 +1,3 @@
+Ref:
+1. https://github.com/mesutpiskin/keycloak-2fa-email-authenticator
+2. https://github.com/dasniko/keycloak-aws-ses-email-provider/blob/master/pom.xml
\ No newline at end of file
diff --git a/sc-spi/pom.xml b/sc-spi/pom.xml
new file mode 100644
index 0000000..d7a753f
--- /dev/null
+++ b/sc-spi/pom.xml
@@ -0,0 +1,64 @@
+
+
+
+ keycloak-sendcloud-email-verification
+ com.fornet.keycloak
+ 1.0.0.0-SNAPSHOT
+ 4.0.0
+ jar
+
+
+ UTF-8
+ 17
+ ${java.version}
+ ${java.version}
+ 22.0.2
+
+
+
+
+
+ org.keycloak
+ keycloak-server-spi
+ ${keycloak.version}
+ provided
+
+
+
+ org.keycloak
+ keycloak-server-spi-private
+ ${keycloak.version}
+ provided
+
+
+
+ org.keycloak
+ keycloak-services
+ ${keycloak.version}
+ provided
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc-spi/src/main/java/com/fornet/keycloak/email/ses/SESEmailSenderProvider.java b/sc-spi/src/main/java/com/fornet/keycloak/email/ses/SESEmailSenderProvider.java
new file mode 100644
index 0000000..329c09e
--- /dev/null
+++ b/sc-spi/src/main/java/com/fornet/keycloak/email/ses/SESEmailSenderProvider.java
@@ -0,0 +1,18 @@
+package com.fornet.keycloak.email.ses;
+
+import org.keycloak.email.EmailException;
+import org.keycloak.email.EmailSenderProvider;
+
+import java.util.Map;
+
+public class SESEmailSenderProvider implements EmailSenderProvider {
+ @Override
+ public void send(Map config, String address, String subject, String textBody, String htmlBody) throws EmailException {
+
+ }
+
+ @Override
+ public void close() {
+
+ }
+}
diff --git a/sc-spi/src/main/java/com/fornet/keycloak/email/ses/SESEmailSenderProviderFactory.java b/sc-spi/src/main/java/com/fornet/keycloak/email/ses/SESEmailSenderProviderFactory.java
new file mode 100644
index 0000000..d6bdb65
--- /dev/null
+++ b/sc-spi/src/main/java/com/fornet/keycloak/email/ses/SESEmailSenderProviderFactory.java
@@ -0,0 +1,42 @@
+package com.fornet.keycloak.email.ses;
+
+import org.keycloak.Config;
+import org.keycloak.email.EmailSenderProvider;
+import org.keycloak.email.EmailSenderProviderFactory;
+import org.keycloak.models.KeycloakSession;
+import org.keycloak.models.KeycloakSessionFactory;
+import org.keycloak.provider.ServerInfoAwareProviderFactory;
+
+import java.util.Map;
+
+public class SESEmailSenderProviderFactory implements EmailSenderProviderFactory, ServerInfoAwareProviderFactory {
+ @Override
+ public EmailSenderProvider create(KeycloakSession session) {
+ return null;
+ }
+
+ @Override
+ public void init(Config.Scope config) {
+
+ }
+
+ @Override
+ public void postInit(KeycloakSessionFactory factory) {
+
+ }
+
+ @Override
+ public void close() {
+
+ }
+
+ @Override
+ public String getId() {
+ return null;
+ }
+
+ @Override
+ public Map getOperationalInfo() {
+ return null;
+ }
+}
diff --git a/sc-spi/src/main/resources/services/src/main/resources/META-INF/services/org.keycloak.email.EmailSenderProviderFactory b/sc-spi/src/main/resources/services/src/main/resources/META-INF/services/org.keycloak.email.EmailSenderProviderFactory
new file mode 100644
index 0000000..a4b70a3
--- /dev/null
+++ b/sc-spi/src/main/resources/services/src/main/resources/META-INF/services/org.keycloak.email.EmailSenderProviderFactory
@@ -0,0 +1 @@
+com.fornet.keycloak.email.ses.SESEmailSenderProviderFactory
\ No newline at end of file
diff --git a/sc-spi/src/main/resources/src/main/resources/META-INF/jboss-deployment-structure.xml b/sc-spi/src/main/resources/src/main/resources/META-INF/jboss-deployment-structure.xml
new file mode 100644
index 0000000..0e2e46d
--- /dev/null
+++ b/sc-spi/src/main/resources/src/main/resources/META-INF/jboss-deployment-structure.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sc-spi/src/test/resources/log4j.properties b/sc-spi/src/test/resources/log4j.properties
new file mode 100644
index 0000000..bfe2606
--- /dev/null
+++ b/sc-spi/src/test/resources/log4j.properties
@@ -0,0 +1,2 @@
+log4j.rootLogger=TRACE, NullAppender
+log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender
\ No newline at end of file