diff --git a/lib/IdPAccountManager/SAMLMetadata.pm b/lib/IdPAccountManager/SAMLMetadata.pm
index 31ac8be0fadd049383486564c5c13ba20f92f9d9..532ea49317c96a3d54c4d45cb4142185c0854037 100644
--- a/lib/IdPAccountManager/SAMLMetadata.pm
+++ b/lib/IdPAccountManager/SAMLMetadata.pm
@@ -140,15 +140,17 @@ sub parse {
                     }
                 }
             } elsif ($child->localname() eq 'ContactPerson') {
-                my %contact_details;
-                $contact_details{type} = $child->getAttribute('contactType');
-                if (defined $contact_details{type}) {
+                my $details;
+                $details->{type} = $child->getAttribute('contactType');
+                if (defined $details->{type}) {
                     foreach my $contact_child ($child->childNodes()) {
                         next unless $contact_child->nodeType() == XML_ELEMENT_NODE;
-                        $contact_details{ $contact_child->localname() } =
-                            $contact_child->textContent();
+                        my $key   = $contact_child->localname();
+                        my $value = $contact_child->textContent();
+                        $value =~ s/^mailto:// if $key eq 'EmailAddress';
+                        $details->{$key} = $value;
                     }
-                    push @{ $data->{contacts} }, \%contact_details;
+                    push @{ $data->{contacts} }, $details;
                 }
             } elsif ($child->localname() eq 'Organization') {
                 foreach my $name ($child->getChildrenByLocalName('OrganizationName')) {