Fórumok

Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

thumbnail
lutz Bremen, módosítva 11 év-val korábban

Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
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
thumbnail
André Bunse, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Junior Member Bejegyzések: 85 Csatlakozás dátuma: 2012.03.16. Legújabb bejegyzések
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é
thumbnail
lutz Bremen, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
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 ?
thumbnail
André Bunse, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Junior Member Bejegyzések: 85 Csatlakozás dátuma: 2012.03.16. Legújabb bejegyzések
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é
thumbnail
lutz Bremen, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
Ich habe da was gefunden aber das verstehe ich ganz und gar nicht.

SendMailHook

Set 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.

mail.hook.sendmail.add.user=adduser %1% -s /bin/false
mail.hook.sendmail.change.password=autopasswd %1% %2%
mail.hook.sendmail.delete.user=userdel -r %1%
mail.hook.sendmail.home=/home
mail.hook.sendmail.virtusertable=/etc/mail/virtusertable
mail.hook.sendmail.virtusertable.refresh=bash -c "makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable"



mail.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
thumbnail
lutz Bremen, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
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 ^^
thumbnail
André Bunse, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Junior Member Bejegyzések: 85 Csatlakozás dátuma: 2012.03.16. Legújabb bejegyzések
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

 
#
# Set this to true if strangers who create accounts need to be verified via
# email.
#
company.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é
thumbnail
lutz Bremen, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
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, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

New Member Bejegyzések: 16 Csatlakozás dátuma: 2012.02.15. Legújabb bejegyzések
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
thumbnail
lutz Bremen, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
das ist ja super . könntest du deine lösung denn mal ausführlicher hierposten mit code usw? lgl utz
Stephan H, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

New Member Bejegyzések: 16 Csatlakozás dátuma: 2012.02.15. Legújabb bejegyzések
Moin,

kein Problem. Wie gesagt, die "addUserWithWorkflow" Methode hooken, dann ist man schon an der richtigen Stelle:
public class MyUserLocalServiceImpl extends UserLocalServiceWrapper {
	
	public MyUserLocalServiceImpl(UserLocalService userLocalService) {
		
		super(userLocalService);
	}
	
	public User addUserWithWorkflow(long creatorUserId, long companyId, boolean autoPassword, String password1, String password2, boolean autoScreenName, String screenName,
            String emailAddress, long facebookId, String openId, Locale locale, String firstName, String middleName, String lastName, int prefixId,
            int suffixId, boolean male, int birthdayMonth, int birthdayDay, int birthdayYear, String jobTitle, long[] groupIds, long[] organizationIds, long[] roleIds,
            long[] userGroupIds, boolean sendEmail, ServiceContext serviceContext)
            throws PortalException, SystemException {
		
		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);
		
		// Send notification mail
		Mailer.buildAndSendNotificationEmail(companyId, user);
		
		return user;
	}
}


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:
public static void buildAndSendNotificationEmail(long companyId, User newUser) {
		
		// Consists of users without specific role
		String mailUsers = "<br>";
		
		try {
			// Get all users
			List<user> users = UserLocalServiceUtil.getCompanyUsers(companyId, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
			
			// Get Role ID
			long roleId = RoleLocalServiceUtil.getRole(companyId, "RoleName").getPrimaryKey();
			
			// Add users without specified role to mailUsers-List
			for(User user: users)
			{				
				if(!RoleLocalServiceUtil.hasUserRole(user.getUserId(), roleId))
				{
					mailUsers = mailUsers.concat("- " + user.getFullName() + " (" + user.getEmailAddress() + ")<br>");
				}
			}
			
		} catch (Exception e1) {
			log.error("While searching for users for mail notification");
			log.error(e1);
		}
		
		// Mail Header
		String from = "sender@sender.com";
		String to	= "receiver@receiver.com";
		String cc	= null;
		String bcc	= null;
		String subject = "Portal: Neuer Benutzer";
		
		// Mail Content
		String body	= "Hallo, <br><br>"
				+ "im Portal hat sich ein weiterer Benutzer registriert:<br>"
				+ newUser.getFullName() + " (" + newUser.getEmailAddress() + ")<br><br>"
				+ "Soll dieser Nutzer am Portal teilnehmen, ist die Zuweisung der notwendigen 'RoleName' - Rolle notwendig.<br><br>"
				+ "Folgende Benutzer haben noch keine weiterführenden Berechtigungen im Portal:<br>"
				+ mailUsers + "<br>"
				+ "Ihr Portal<br>"
				+ "http://portal-url.de<br><br>";
		
		try {
			Mailer.sendEmail(from, to, cc, bcc, subject, body, null);
		} catch (Exception e) {
			log.error("While sending the mail notification");
			log.error(e);
		}
	}</user>


Dann die InternetAddress-Objekte erstellen:
private static void sendEmail(final String from, final String to, final String cc,
									final String bcc, final String subject, final String body,
									List<fileattachment> attachments) throws Exception {
	
	    InternetAddress[] toM = new InternetAddress[] { new InternetAddress(to) };
	    InternetAddress fromM = new InternetAddress(from);
	    InternetAddress[] ccM = null;
	    InternetAddress[] bccM = null;
	    
	    if (cc != null)
	        ccM = new InternetAddress[] { new InternetAddress(cc) };
	    
	    if (bcc != null)
	        bccM = new InternetAddress[] { new InternetAddress(bcc) };
	
	    InternetAddress[] bulkAddresses = null;
	    InternetAddress[] replyTo = null;
	    
	    boolean htmlFormat = true;
	    
	    String messageId = null;
	    String inReplyTo = null;
	
	    Mailer.send(fromM, toM, ccM, bccM, bulkAddresses, subject, body, htmlFormat, replyTo, messageId, inReplyTo, attachments);
	}</fileattachment>


Und weg damit:
private static void send(InternetAddress from, InternetAddress[] to, InternetAddress[] cc,
								InternetAddress[] bcc, InternetAddress[] bulkAddresses,
								String subject, String body, boolean htmlFormat,
								InternetAddress[] replyTo, String messageId, String inReplyTo,
								List<fileattachment> attachments) {
        
        SMTPAccount smtpAccount = null;
        
        try {
			MailEngine.send(from,to, cc,
			        		bcc, bulkAddresses,
			        		subject, body, htmlFormat,
			        		replyTo, messageId, inReplyTo,
			        		attachments,smtpAccount);
		} catch (Exception e) {
			log.error("While calling the MailEngine");
			log.error(e);
		}

    }</fileattachment>


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

Gruß
thumbnail
lutz Bremen, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
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, módosítva 11 év-val korábban

RE: Emailbenachrichtigung wenn neuer Nutzer sich registriert hat?

New Member Bejegyzések: 16 Csatlakozás dátuma: 2012.02.15. Legújabb bejegyzések
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ß