diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
index 0015e89..8a8ac3d 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
@@ -139,11 +139,27 @@
 		//EM:copied from EntityDao
 		KorAPUser user = new KorAPUser(); // oder eigentlich new DemoUser oder new DefaultUser.
         user.setUsername(username);
-        // get user data
-        user.setEmail(config.getTestEmail());
         return user;
 //		return entHandler.getAccount(username);
 	}
+	
+	@Override
+    public User getUser (String username, String method)
+            throws KustvaktException {
+	    KorAPUser user = new KorAPUser();
+        user.setUsername(username);
+        String email = null;
+        switch (method.toLowerCase()) {
+            case "ldap":
+                email = config.getTestEmail();
+                break;
+            default:
+                email = config.getTestEmail();
+                break;
+        }
+        user.setEmail(email);
+        return user;
+    }
 
 	public TokenContext refresh(TokenContext context) throws KustvaktException {
 		AuthenticationIface provider = getProvider(context.getTokenType(), null);
diff --git a/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java b/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
index 201fc4b..aee009b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
+++ b/full/src/main/java/de/ids_mannheim/korap/config/FullConfiguration.java
@@ -18,7 +18,8 @@
     private boolean isMailEnabled;
     private String testEmail;
     private String noReply;
-
+    private String emailAddressRetrieval;
+    
     private String groupInvitationTemplate;
     
     private String ldapConfig;
@@ -64,9 +65,10 @@
         setMailEnabled(Boolean.valueOf(properties.getProperty("mail.enabled", "false")));
         if (isMailEnabled){
             // other properties must be set in the kustvakt.conf
-            setTestEmail(properties.getProperty("mail.receiver"));
+            setTestEmail(properties.getProperty("mail.receiver","test@localhost"));
             setNoReply(properties.getProperty("mail.sender"));
             setGroupInvitationTemplate(properties.getProperty("template.group.invitation"));
+            setEmailAddressRetrieval(properties.getProperty("mail.address.retrieval","test"));
         }
     }
 
@@ -269,4 +271,12 @@
         this.groupInvitationTemplate = groupInvitationTemplate;
     }
 
+    public String getEmailAddressRetrieval () {
+        return emailAddressRetrieval;
+    }
+
+    public void setEmailAddressRetrieval (String emailAddressRetrieval) {
+        this.emailAddressRetrieval = emailAddressRetrieval;
+    }
+
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/MailService.java b/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
index 866a0a9..5051815 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/MailService.java
@@ -42,7 +42,8 @@
 
             public void prepare (MimeMessage mimeMessage) throws Exception {
 
-                User invitee = authManager.getUser(inviteeName);
+                User invitee = authManager.getUser(inviteeName,
+                        config.getEmailAddressRetrieval());
 
                 MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
                 message.setTo(new InternetAddress(invitee.getEmail()));
diff --git a/full/src/main/resources/kustvakt.conf b/full/src/main/resources/kustvakt.conf
index d737a06..ab20bad 100644
--- a/full/src/main/resources/kustvakt.conf
+++ b/full/src/main/resources/kustvakt.conf
@@ -18,6 +18,7 @@
 mail.enabled = false
 mail.receiver = test@localhost
 mail.sender = noreply@ids-mannheim.de
+mail.address.retrieval = test
 
 ## mail.templates
 template.group.invitation = notification.vm
