2016-07-27 15 views
0

In meiner Liferay-Anwendung füge ich Anwendungsbenutzer hinzu, indem ich Expando programmatisch benutze und nicht die Standardbenutzeranmeldung von liveray verwende. Jetzt möchte ich Anmeldeinformationen an den Benutzer an seine E-Mail-Adresse senden, indem er die in der Systemsteuerung unter Portaleinstellungen - E-Mail-Vorlagen verfügbaren liaray-Standardvorlagen verwendet.Wie benutze ich livery eingebettete E-Mail-Vorlagen programmatisch?

Wie kann ich E-Mail mit dieser integrierten Liferay-Vorlage auslösen? Jeder Hinweis wird geschätzt.

Antwort

0

Liferay verwendet Vorlagendateien (.tmpl) zum Verwalten von E-Mail-Vorlagen. Wie in der Liferay-Quelle angegeben, wird das angegebene Snippet zur Benutzererstellung verwendet, um E-Mails an Benutzer zu senden.

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

Dies ist Teil der Service Impl-Klasse UserLocalServiceImpl. Hier ist "PropsKeys.ADMIN_EMAIL_USER_ADDED_BODY" der Pfad der Vorlage für den Body-Inhalt (Standardwert, der von liveray verwendet wird). Sie können Ihre benutzerdefinierten Daten in der bereitgestellten Vorlage auffüllen.

Edit: Nachdem Sie Ihre eigene Logik ausführen, können Sie direkt anrufen

UserLocalServiceUtil.sendPassword(
      long companyId, String emailAddress, String fromName, 
      String fromAddress, String subject, String body, 
      ServiceContext serviceContext) 

Methode direkt von benutzerdefinierten Klasse, die Pflege der Verwendung liferay Vorlage sowie Passwort-Management statt.

+0

Vielen Dank für Ihre Antwort, aber ich muss auch das Passwort des Benutzers senden, woher bekomme ich das Passwort des Benutzers? –

+0

Verwenden Sie user.getPassword() für das –

+0

user.getPassword() gibt mir ein verschlüsseltes Passwort, das nicht entschlüsselt werden kann. Das ist also nicht nützlich. –