本文介紹了Keyloak將公司徽標添加到重置密碼電子郵件的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試在重置密碼電子郵件中顯示公司徽標。
我已經檢查了鑰匙斗篷文檔,發現它們不支持它。我也嘗試過將圖像編碼為base64格式,但Gmail不支持。我如何才能做到這一點?
推薦答案
您需要創建自定義主題。
檢查Keycloak的文檔第3章:docs
共有五種類型的主題/頁面:
賬戶-賬戶管理
管理-管理控制臺
電子郵件
登錄-登錄表單
歡迎-歡迎頁面
您可以從簽出此示例存儲庫開始kc themes sample,編輯模板并將其部署到您的密鑰罩中。
就像鏈接上說的那樣.要部署它,請執行以下操作:
復制
部署主題的最簡單方法是復制
SRC/Main/Resources/Theme/*轉到Themes/。模塊
或者,您可以部署為模塊。這可以通過以下方式完成
首次運行:
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
并通過添加以下內容注冊主題模塊:<theme> ... <modules> <module>org.keycloak.example.themes</module> </modules> </theme>
您可以復制其他主題或將其從base templates復制到您的自定義主題項目。
電子郵件基礎模板:email templates
在簽出項目和源代碼之前,請注意選擇相同的密鑰罩版本。
將徽標添加到現有自定義主題內的電子郵件模板的步驟
-
找到您的模板文件:/html/password-set.ftl(例如base sample file)
<html>
<body>
${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</body>
</html>
-
替換為您的代碼。例如,使用base64圖像或對您的圖像文件的鏈接引用(https://static.myserver.com/image.png等.)
<html>
<body>
<div>
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red Logo">
</div>
<div>
${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</div>
</body>
</html>
也更新您的純文本模板(如果需要,因為并非所有客戶端都支持html)。您不能在此添加圖像,但如果文本消息[file text/password-set.ftl]
在Keycloak中打包并部署主題
在領域配置選項卡中選擇您的電子郵件模板
正如您在DefaultEmailSenderProvider.java類中看到的那樣,Keycloak將嘗試發送HTML電子郵件,如果您沒有定義它,則使用text-Plain(文件:text/password-set.ftl
更新:
當前某些電子郵件客戶端有一些限制。
我建議您閱讀以下關于它的說明(read me)。
正如它所說,許多Web客戶端不會顯示包含一個以上Base64 Embedded圖像的電子郵件(或者一個都不顯示)。
因此,使用鑰匙罩電子郵件的一個好策略是使用對靜電內容服務器提供的圖像的引用(如果沒有,鑰匙罩位于也可以配置為靜電服務器的野蒼蠅上)。
因此,您可以實施的最佳解決方案是按如下方式添加您的鏡像:
例如
<img src = "https://static.myserver.com/static/logo.png" alt = "img" />
這篇關于Keyloak將公司徽標添加到重置密碼電子郵件的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,