0

在我的 liferay 应用程序中,我以编程方式使用 Expando 添加应用程序用户,而不是使用 liferay 默认用户注册。现在,我想使用控制面板 - 门户设置 - 电子邮件模板中提供的 liferay 默认模板将凭据发送到用户的电子邮件地址。

如何使用此 liferay 内置模板触发电子邮件?任何提示表示赞赏。

4

1 回答 1

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();

这是服务实现类 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 模板以及密码管理。

于 2016-07-28T11:04:34.937 回答