Hi,
I recently deploy a docker Keycloak in 21.0.1, with a custom SPI in order to overload the default Email sender, I added the .jar in the correct file /opt/keycloak/providers
However it doesn’t seems to take in consideration my SPI
EmailSenderProviderFactory :
import org.keycloak.Config.Scope;
import org.keycloak.email.EmailSenderProvider;
import org.keycloak.email.EmailSenderProviderFactory;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
public class CustomEmailSenderProviderFactory implements EmailSenderProviderFactory {
private static EmailService emailService;
@Override
public EmailSenderProvider create(KeycloakSession session) {
return new CustomEmailSenderProvider(emailService);
}
@Override
public void init(Scope config) {
}
@Override
public void postInit(KeycloakSessionFactory factory) {
}
@Override
public void close() {
}
@Override
public String getId() {
return "default";
}
}
I also try giving it another name, but it still doesn’t seems to work
import java.util.Map;
import org.keycloak.email.EmailException;
import org.keycloak.email.EmailSenderProvider;
import org.keycloak.models.UserModel;
public class CustomEmailSenderProvider implements EmailSenderProvider {
private final EmailService emailService;
public CustomEmailSenderProvider(EmailService emailService) {
this.emailService = emailService;
}
@Override
public void close() {
}
@Override
public void send(Map<String, String> config, String address, String subject, String textBody, String htmlBody)
throws EmailException {
/ /TODO call custom api for mail sending
}
@Override
public void send(Map<String, String> config, UserModel user, String subject, String textBody,
String htmlBody) throws EmailException {
System.out.println("email is ready");
this.send(config, user.getEmail(), subject, textBody, htmlBody);
}
}
Application log :
