jav*_*mat 5 html java keycloak
我正在尝试在重置密码电子邮件中显示公司徽标。我已经检查了 keycloak 文档,发现它们不支持它。我还尝试将图像编码为 base64,但 Gmail 不支持。我怎样才能做到这一点?
您需要创建一个自定义主题。检查 Keycloak 的文档第 3 章:文档
有五种类型的主题/页面:
您可以首先签出此示例存储库kc 主题示例,编辑模板并将其部署到您的 keycloak 中。
就像链接所说...部署它:
复制
部署主题的最简单方法是将 src/main/resources/theme/* 复制到主题/。
模块
或者,您可以部署为模块。这可以通过首先运行来完成:
mvn clean install $KEYCLOAK_HOME/bin/jboss-cli.sh --command="module add --name=org.keycloak.example.themes --resources=target/keycloak-example-themes.jar"
然后
standalone/configuration/standalone.xml
通过添加以下内容打开并注册主题模块:Run Code Online (Sandbox Code Playgroud)<theme> ... <modules> <module>org.keycloak.example.themes</module> </modules> </theme>
您可以复制其他主题或将其从基本模板复制到自定义主题项目。
电子邮件基本模板:电子邮件模板
在签出项目和源之前,请注意选择相同的 Keycloak 版本。
将徽标添加到现有自定义主题内的电子邮件模板的步骤
<theme>
...
<modules>
<module>org.keycloak.example.themes</module>
</modules>
</theme>
Run Code Online (Sandbox Code Playgroud)
<html>
<body>
${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
也更新您的纯文本模板(如果您需要,因为并非所有客户端都支持 html)。您无法在此处添加图像,但如果有短信 [file text/password-reset.ftl]
在 Keycloak 中打包并部署您的主题
在“领域配置”选项卡中选择您的电子邮件模板
正如您在类DefaultEmailSenderProvider.java中看到的那样,Keycloak 将尝试发送 HTML 电子邮件,如果您没有定义它,它将使用 text-plain (文件:text/password-reset.ftl
目前,某些电子邮件客户端施加了一些限制。我建议您阅读以下有关它的注释(读我)。
正如它所说,许多 Web 客户端不会显示包含多个嵌入 Base64 图像的电子邮件(或不显示任何图像)。
因此,使用 Keycloak 电子邮件的一个好策略是使用对静态内容服务器提供的图像的引用(如果您没有其中之一,则 keycloak 位于也可以配置为静态服务器的 Wildfly 上)。
因此,您可以实施的最佳解决方案是按如下方式添加图像:例如。
<img src = "https://static.myserver.com/static/logo.png" alt = "img" />
Run Code Online (Sandbox Code Playgroud)