在我的liferay应用程序中,我正在以编程方式使用Expando添加应用程序用户,而不使用liferay默认用户注册。 现在,我想使用控制面板 - 门户网站设置 - 电子邮件模板中提供的liferay默认模板向用户发送凭据给他的电子邮件地址。
如何使用此liferay内置模板触发电子邮件? 任何提示都表示赞赏。
答案 0 :(得分:0)
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();
这是服务impl类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模板以及密码管理。