Forums

Home » Liferay Portal » Deutsch

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
lutz Bremen
Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
October 30, 2012 7:50 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

Hallo,

weiss jemand ob es möglich ist eine Emailbenachrichtigung einzustellen, die mir eine Mail schick immer wenn sich ein neuer Nutzer angelegt hat?

Greetz Lutz
André Bunse
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
October 30, 2012 8:24 AM
Answer

André Bunse

Rank: Junior Member

Posts: 85

Join Date: March 15, 2012

Recent Posts

Hi Lutz,

im Kontrollbereich unter "Einstellungen", dann im Menü auf der rechten Seite unter "Konfiguration" den Menüpunkt
"E-Mail Benachrichtigung" auswählen und dann mittig den Tab-Reiter "Benachrichtung über neues Benutzerkonto" wählen.

Gruß
André
lutz Bremen
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
October 30, 2012 8:38 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

Da kreigt der Nutzer die email. aber ich will das der Admin, also ich eine mail bekommt wenn sich ein anderer registriert.

lg

PS: oder bin ich einfach blind und übersehe was ?
André Bunse
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
October 31, 2012 1:30 AM
Answer

André Bunse

Rank: Junior Member

Posts: 85

Join Date: March 15, 2012

Recent Posts

Hi Lutz,

nein du übersiehst nichts, das war ein Denkfehler meinerseits ;)

Mir scheint da könnte dann am ehesten ein Hook helfen. Such mal nach "mail.hook.impl" in der portal-impl/src/portal.properties.
Da erhälst du dann wahrscheinlich ein "Event" für jede Mail die rausgeht, aber die Richtige zu filtern müsste ja machbar sein.
Wobei du dann natürlich für das Versenden einer Mail mit entsprechenden Hinweisen selber sorgen müsstest.

Oder es findet sich eine Art "RegisterPreAction" auf die du reagieren kannst. Bekannt ist mir da jetzt leider nichts. Wir verwenden
ein komplett eigenes Registrierungsportlet, was diese Dinge abdeckt.

Viel Erfolg bei der weiteren Suche, halt die Community auf dem Laufenden ;)

Gruß
André
lutz Bremen
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
October 31, 2012 8:05 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

Ich habe da was gefunden aber das verstehe ich ganz und gar nicht.
 1
 2SendMailHook
 3
 4Set the commands for adding, updating and deleting a user where %1% is the user id and %2% is the password. Set the home and virtual user table information.
 5
 6mail.hook.sendmail.add.user=adduser %1% -s /bin/false
 7mail.hook.sendmail.change.password=autopasswd %1% %2%
 8mail.hook.sendmail.delete.user=userdel -r %1%
 9mail.hook.sendmail.home=/home
10mail.hook.sendmail.virtusertable=/etc/mail/virtusertable
11mail.hook.sendmail.virtusertable.refresh=bash -c "makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable"


1mail.hook.sendmail.add.user=adduser %1% -s /bin/false


ist das das was ich suche? ich kann ja nicht einfach true anstatt false schrieben....^^ das wäre zu simpel oder? emoticon
lutz Bremen
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
October 31, 2012 8:45 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

bzw. es würde mir schon reichen wenn ich eine kopie der mail bekäme die an den user rausgeht? also müsste ich doch eigentlich nur meine mailadresse eintragen, da wo seine auch steht. ist nur die frage wo ich genau sowas finde? ich suche mich dumm und dämlich ^^
André Bunse
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
October 31, 2012 2:14 PM
Answer

André Bunse

Rank: Junior Member

Posts: 85

Join Date: March 15, 2012

Recent Posts

Also Änderungen an der "sendmail"-Konfiguration werden wohl nichts bringen.
Hier geht es ja nur darum neue Email-Adressen hinzuzufügen.

Was genau möchtest du denn durch die E-Mail an dich erreichen?

Als Genehmigungsprozess wäre es ja sinnvoller folgende Einstellungen zu verwenden

1
2#
3# Set this to true if strangers who create accounts need to be verified via
4# email.
5#
6company.security.strangers.verify=false

Als reine Protokoll-/Report-Funktion fände ich es persönlich schöner eine Auflistung neuer User
direkt in Liferay zur Verfügung zu haben ohne meinen Mail-Account zu durchforsten und dann würde
ich z.B. das Auditing inklusive Übersicht im Kontroll-Panel bevorzugen.

Ich hätte jetzt aber auch nicht gedacht, dass Liferay dafür keine Lösung parat hat, finden kann ich nämlich auch nichts.

Gruß
André
lutz Bremen
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
November 6, 2012 5:00 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

ich will einfach erreichen, dass immer wenn sich einer anmeldet das ich dann ne mail bekomme. damit ich weiss wer sich so anmeldet und ich nicht bei angenommen 100ten usern suche muss wenn ich einen daraus habe, das z.b. eine Rolle bekommt oder eine community zugewiesen wird
Stephan H
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
November 7, 2012 5:19 AM
Answer

Stephan H

Rank: New Member

Posts: 15

Join Date: February 15, 2012

Recent Posts

Hallo zusammen,

genau das wollte ich auch erreichen und habe es mit einem Hook implementiert - nachdem ich vorher schon Ewigkeiten mit der Suche im Netz verbracht hab.

Ich habe im UserLocalService die "addUserWithWorkflow" - Methode gehookt und um den Aufruf meiner Methode für die Mail Notification erweitert.

Die Mail enthält bei mir zur Zeit einen Hinweis auf den neuen Nutzer, sowie eine Liste der Nutzer, denen noch eine bestimmte Rolle fehlt.
Im Grunde wohl genau deinen Anforderungen Lutz.

Eine einfache Lösung. Ein Portlet im Control Panel wäre wohl auch etwas sehr schickes, da man damit gleich weitere Funktionalitäten verknüpfen könnte. Aber für Quick&Dirty. um die Info überhaupt zu bekommen, zu gebrauchen.

Gruß
Stephan
lutz Bremen
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
November 7, 2012 6:48 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

das ist ja super . könntest du deine lösung denn mal ausführlicher hierposten mit code usw? lgl utz
Stephan H
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
November 7, 2012 11:42 PM
Answer

Stephan H

Rank: New Member

Posts: 15

Join Date: February 15, 2012

Recent Posts

Moin,

kein Problem. Wie gesagt, die "addUserWithWorkflow" Methode hooken, dann ist man schon an der richtigen Stelle:
 1public class MyUserLocalServiceImpl extends UserLocalServiceWrapper {
 2   
 3    public MyUserLocalServiceImpl(UserLocalService userLocalService) {
 4       
 5        super(userLocalService);
 6    }
 7   
 8    public User addUserWithWorkflow(long creatorUserId, long companyId, boolean autoPassword, String password1, String password2, boolean autoScreenName, String screenName,
 9            String emailAddress, long facebookId, String openId, Locale locale, String firstName, String middleName, String lastName, int prefixId,
10            int suffixId, boolean male, int birthdayMonth, int birthdayDay, int birthdayYear, String jobTitle, long[] groupIds, long[] organizationIds, long[] roleIds,
11            long[] userGroupIds, boolean sendEmail, ServiceContext serviceContext)
12            throws PortalException, SystemException {
13       
14        User user = super.addUserWithWorkflow(creatorUserId, companyId, autoPassword, password1, password2, autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName, middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds, organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);
15       
16        // Send notification mail
17        Mailer.buildAndSendNotificationEmail(companyId, user);
18       
19        return user;
20    }
21}


Für das Erstellen und Senden der Mail habe ich im Hook noch eine weitere Klasse erstellt (Mailer).
Aufgeteilt in drei Methoden wir als erstes der Inhalt der Mail erstellt:
 1public static void buildAndSendNotificationEmail(long companyId, User newUser) {
 2       
 3        // Consists of users without specific role
 4        String mailUsers = "<br/>";
 5       
 6        try {
 7            // Get all users
 8            List<User> users = UserLocalServiceUtil.getCompanyUsers(companyId, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
 9            
10            // Get Role ID
11            long roleId = RoleLocalServiceUtil.getRole(companyId, "RoleName").getPrimaryKey();
12            
13            // Add users without specified role to mailUsers-List
14            for(User user: users)
15            {               
16                if(!RoleLocalServiceUtil.hasUserRole(user.getUserId(), roleId))
17                {
18                    mailUsers = mailUsers.concat("- " + user.getFullName() + " (" + user.getEmailAddress() + ")<br/>");
19                }
20            }
21            
22        } catch (Exception e1) {
23            log.error("While searching for users for mail notification");
24            log.error(e1);
25        }
26       
27        // Mail Header
28        String from = "sender@sender.com";
29        String to    = "receiver@receiver.com";
30        String cc    = null;
31        String bcc    = null;
32        String subject = "Portal: Neuer Benutzer";
33       
34        // Mail Content
35        String body    = "Hallo, <br/><br/>"
36                + "im Portal hat sich ein weiterer Benutzer registriert:<br/>"
37                + newUser.getFullName() + " (" + newUser.getEmailAddress() + ")<br/><br/>"
38                + "Soll dieser Nutzer am Portal teilnehmen, ist die Zuweisung der notwendigen 'RoleName' - Rolle notwendig.<br/><br/>"
39                + "Folgende Benutzer haben noch keine weiterführenden Berechtigungen im Portal:<br/>"
40                + mailUsers + "<br/>"
41                + "Ihr Portal<br/>"
42                + "http://portal-url.de<br/><br/>";
43       
44        try {
45            Mailer.sendEmail(from, to, cc, bcc, subject, body, null);
46        } catch (Exception e) {
47            log.error("While sending the mail notification");
48            log.error(e);
49        }
50    }


Dann die InternetAddress-Objekte erstellen:
 1private static void sendEmail(final String from, final String to, final String cc,
 2                                    final String bcc, final String subject, final String body,
 3                                    List<FileAttachment> attachments) throws Exception {
 4   
 5        InternetAddress[] toM = new InternetAddress[] { new InternetAddress(to) };
 6        InternetAddress fromM = new InternetAddress(from);
 7        InternetAddress[] ccM = null;
 8        InternetAddress[] bccM = null;
 9       
10        if (cc != null)
11            ccM = new InternetAddress[] { new InternetAddress(cc) };
12       
13        if (bcc != null)
14            bccM = new InternetAddress[] { new InternetAddress(bcc) };
15   
16        InternetAddress[] bulkAddresses = null;
17        InternetAddress[] replyTo = null;
18       
19        boolean htmlFormat = true;
20       
21        String messageId = null;
22        String inReplyTo = null;
23   
24        Mailer.send(fromM, toM, ccM, bccM, bulkAddresses, subject, body, htmlFormat, replyTo, messageId, inReplyTo, attachments);
25    }


Und weg damit:
 1private static void send(InternetAddress from, InternetAddress[] to, InternetAddress[] cc,
 2                                InternetAddress[] bcc, InternetAddress[] bulkAddresses,
 3                                String subject, String body, boolean htmlFormat,
 4                                InternetAddress[] replyTo, String messageId, String inReplyTo,
 5                                List<FileAttachment> attachments) {
 6       
 7        SMTPAccount smtpAccount = null;
 8       
 9        try {
10            MailEngine.send(from,to, cc,
11                            bcc, bulkAddresses,
12                            subject, body, htmlFormat,
13                            replyTo, messageId, inReplyTo,
14                            attachments,smtpAccount);
15        } catch (Exception e) {
16            log.error("While calling the MailEngine");
17            log.error(e);
18        }
19
20    }


Wichtig: Die ntowendige NestedException ist in der "commons-lang-2.3.jar" von Apache implementiert. Die auch einbinden.

Gruß
lutz Bremen
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
November 8, 2012 12:11 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

Moin,
mega. Danke dir. aber eine frage habe ich noch, da ich das noch nie gemacht habe.
kein Problem. Wie gesagt, die "addUserWithWorkflow" Methode hooken, dann ist man schon an der richtigen Stelle:


wie hooke ich denn die Methode? und wo finde ich die? wie gesagt ich hab noch nie nen hook geschrieben.
LG Lutz
Stephan H
RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?
November 8, 2012 1:43 AM
Answer

Stephan H

Rank: New Member

Posts: 15

Join Date: February 15, 2012

Recent Posts

Hi,

ich nutze die Liferay IDE in Eclipse. Als Einstiegsbuch kann ich "Liferay in Action" empfehlen, auch wenn nicht mehr alles aktuell ist. Dort werden auch Hooks beschrieben.

In Eclipse ein neues Projekt (Hook) erstellen und dann übers Icon "New Liferay Hook" einen Hook (Service) zum Projekt hinzufügen. Gehookt werden soll der "UserLocalService" (Add). Die "Impl Class" neu anlegen. Frei definierten Klassennamen (Beispiel: MyUserLocalServiceImpl) angeben, Package kann frei belassen werden. Superclass so belassen. Fertig.

Damit hast du schon die Klasse, die, wie im ersten Code-Auszug gezeigt, Konstruktor und die "addUserWithWorkFlow"-Methode enthalten soll. Letztere um den Aufruf der Mail Benachrichtigung ergänzt.

Gruß