<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Here is the code and the stacktrace just in case, maybe there is a
better way to send email: <br>
<br>
<meta http-equiv="content-type" content="text/html;
charset=windows-1252">
private void send(UserModel user, AuthenticationFlowContext context,
String subject, String textBody, String htmlBody) throws
EmailException {<br>
try {<br>
String address = user.getEmail();<br>
Map<String, String> config =
context.getRealm().getSmtpConfig();<br>
<br>
Properties props = new Properties();<br>
props.setProperty("mail.smtp.host", config.get("host"));<br>
<br>
boolean auth = "true".equals(config.get("auth"));<br>
boolean ssl = "true".equals(config.get("ssl"));<br>
boolean starttls =
"true".equals(config.get("starttls"));<br>
<br>
if (config.containsKey("port")) {<br>
props.setProperty("mail.smtp.port",
config.get("port"));<br>
}<br>
<br>
if (auth) {<br>
props.put("mail.smtp.auth", "true");<br>
}<br>
<br>
if (ssl) {<br>
props.put("mail.smtp.socketFactory.port",
config.get("port"));<br>
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");<br>
}<br>
<br>
if (starttls) {<br>
props.put("mail.smtp.starttls.enable", "true");<br>
}<br>
<br>
String from = config.get("from");<br>
<br>
Session session = Session.getInstance(props);<br>
<br>
Multipart multipart = new MimeMultipart("alternative");<br>
<br>
if (textBody != null) {<br>
MimeBodyPart textPart = new MimeBodyPart();<br>
textPart.setText(textBody, "UTF-8");<br>
multipart.addBodyPart(textPart);<br>
}<br>
<br>
if (htmlBody != null) {<br>
MimeBodyPart htmlPart = new MimeBodyPart();<br>
htmlPart.setContent(htmlBody, "text/html;
charset=UTF-8");<br>
multipart.addBodyPart(htmlPart);<br>
}<br>
<br>
Message msg = new MimeMessage(session);<br>
msg.setFrom(new InternetAddress(from));<br>
msg.setHeader("To", address);<br>
msg.setSubject(subject);<br>
msg.setContent(multipart);<br>
msg.saveChanges();<br>
msg.setSentDate(new Date());<br>
<br>
Transport transport = session.getTransport("smtp");<br>
if (auth) {<br>
transport.connect(config.get("user"),
config.get("password"));<br>
} else {<br>
transport.connect();<br>
}<br>
transport.sendMessage(msg, new InternetAddress[]{new
InternetAddress(address)});<br>
} catch (Exception e) {<br>
throw new EmailException(e);<br>
}<br>
}<br>
<br>
connect/auth<br>
<br>
JBWEB000309: type JBWEB000066: Exception report<br>
<br>
JBWEB000068: message request path:
/auth/realms/MYAPP/protocol/openid-connect/auth<br>
<br>
JBWEB000069: description JBWEB000145: The server encountered an
internal error that prevented it from fulfilling this request.<br>
<br>
JBWEB000070: exception<br>
<br>
java.lang.RuntimeException: request path:
/auth/realms/MYAPP/protocol/openid-connect/auth<br>
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:75)<br>
JBWEB000071: root cause<br>
<br>
org.jboss.resteasy.spi.UnhandledException:
java.lang.NoClassDefFoundError: javax/mail/Multipart<br>
org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:364)<br>
org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:232)<br>
org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:208)<br>
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:556)<br>
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
JBWEB000071: root cause<br>
<br>
java.lang.NoClassDefFoundError: javax/mail/Multipart<br>
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:27)<br>
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:19)<br>
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:124)<br>
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:97)<br>
org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:650)<br>
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.browserAuthentication(AuthorizationEndpoint.java:315)<br>
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:265)<br>
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:123)<br>
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
java.lang.reflect.Method.invoke(Method.java:606)<br>
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168)<br>
org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)<br>
org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)<br>
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:158)<br>
org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:106)<br>
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:153)<br>
org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:91)<br>
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541)<br>
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
JBWEB000071: root cause<br>
<br>
java.lang.ClassNotFoundException: javax.mail.Multipart<br>
java.net.URLClassLoader$1.run(URLClassLoader.java:366)<br>
java.net.URLClassLoader$1.run(URLClassLoader.java:355)<br>
java.security.AccessController.doPrivileged(Native Method)<br>
java.net.URLClassLoader.findClass(URLClassLoader.java:354)<br>
java.lang.ClassLoader.loadClass(ClassLoader.java:425)<br>
java.lang.ClassLoader.loadClass(ClassLoader.java:358)<br>
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:27)<br>
de.MYAPP.auth.authenticator.MYAPPEmailAuthenticatorFactory.create(MYAPPEmailAuthenticatorFactory.java:19)<br>
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:124)<br>
org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:97)<br>
org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:650)<br>
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.browserAuthentication(AuthorizationEndpoint.java:315)<br>
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.buildAuthorizationCodeAuthorizationResponse(AuthorizationEndpoint.java:265)<br>
org.keycloak.protocol.oidc.endpoints.AuthorizationEndpoint.build(AuthorizationEndpoint.java:123)<br>
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>
java.lang.reflect.Method.invoke(Method.java:606)<br>
org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:168)<br>
org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:269)<br>
org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:227)<br>
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:158)<br>
org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:106)<br>
org.jboss.resteasy.core.ResourceLocator.invokeOnTargetObject(ResourceLocator.java:153)<br>
org.jboss.resteasy.core.ResourceLocator.invoke(ResourceLocator.java:91)<br>
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:541)<br>
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:523)<br>
org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)<br>
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)<br>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)<br>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)<br>
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)<br>
org.keycloak.services.filters.KeycloakSessionServletFilter.doFilter(KeycloakSessionServletFilter.java:61)<br>
<br>
<div class="moz-cite-prefix">Am 23.11.15 um 13:32 schrieb Ataraxus:<br>
</div>
<blockquote cite="mid:56530740.5060104@binaryninja.de" type="cite">
<pre wrap="">Hey,
I'm writing my custum login provider which works great so far, but i
stumbled upon a dependency issue:
I wan't to use mail in my authenticator, but when the authenticator gets
actually loaded I get an class not found exception.
Somehow is java.mail.* not available in the classpath of providers which
are dropped in the configuration/providers path.
How can i use these dependencies? I could include them into my jar, but
i guess thats not the "right" way.
Thanks
_______________________________________________
keycloak-user mailing list
<a class="moz-txt-link-abbreviated" href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/keycloak-user">https://lists.jboss.org/mailman/listinfo/keycloak-user</a>
</pre>
</blockquote>
<br>
</body>
</html>