在我的 liferay 应用程序中,我以编程方式使用 Expando 添加应用程序用户,而不是使用 liferay 默认用户注册。现在,我想使用控制面板 - 门户设置 - 电子邮件模板中提供的 liferay 默认模板将凭据发送到用户的电子邮件地址。
如何使用此 liferay 内置模板触发电子邮件?任何提示表示赞赏。
在我的 liferay 应用程序中,我以编程方式使用 Expando 添加应用程序用户,而不是使用 liferay 默认用户注册。现在,我想使用控制面板 - 门户设置 - 电子邮件模板中提供的 liferay 默认模板将凭据发送到用户的电子邮件地址。
如何使用此 liferay 内置模板触发电子邮件?任何提示表示赞赏。
Liferay 使用模板文件(.tmpl)文件来管理电子邮件模板。根据 Liferay Source,对于用户创建,给定的代码段用于向用户发送邮件。
String body = PrefsPropsUtil.getContent(
user.getCompanyId(), PropsKeys.ADMIN_EMAIL_USER_ADDED_BODY);
SubscriptionSender subscriptionSender = new SubscriptionSender();
subscriptionSender.setBody(body);
subscriptionSender.setCompanyId(user.getCompanyId());
subscriptionSender.setContextAttributes(
"[$USER_ID$]", user.getUserId(), "[$USER_PASSWORD$]", password,
"[$USER_SCREENNAME$]", user.getScreenName());
subscriptionSender.setFrom(fromAddress, fromName);
subscriptionSender.setHtmlFormat(true);
subscriptionSender.setMailId(
"user", user.getUserId(), System.currentTimeMillis(),
PwdGenerator.getPassword());
subscriptionSender.setServiceContext(serviceContext);
subscriptionSender.setSubject(subject);
subscriptionSender.setUserId(user.getUserId());
subscriptionSender.addRuntimeSubscribers(toAddress, toName);
subscriptionSender.flushNotificationsAsync();
这是服务实现类 UserLocalServiceImpl 的一部分。这里“PropsKeys.ADMIN_EMAIL_USER_ADDED_BODY”是正文内容模板的路径(liferay 默认使用)。您可以在提供的模板中填充自定义数据。
编辑:执行自定义逻辑后,您可以直接调用
UserLocalServiceUtil.sendPassword(
long companyId, String emailAddress, String fromName,
String fromAddress, String subject, String body,
ServiceContext serviceContext)
直接来自自定义类的方法,它将负责使用 liferay 模板以及密码管理。