Keycloak 21.0.1 Overload emailSenderProvider

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 :

1 Like

Thanks for the reply Dasniko

For anyone wondering, the issue was resolve on the 21.1.1 so you can use this version