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 に答える