如何以编程方式使用liferay内置电子邮件模板?

时间:2016-07-27 09:10:43

标签: liferay liferay-6.2

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

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

1 个答案:

答案 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模板以及密码管理。