Search code examples
c#aliasemail-address

Effective way of extracting alias from email address


I want to extract the alias part from an email address. For example, if I have "name+alias1+alias2+alias3@email.com", I want it to return a list of subaddresses, in this case alias1, alias2, alias3.

I have code to extract the first alias, like this :

var addr = new MailAddress("name+alias@email.com");
var username = addr.User;
var domain = addr.Host;

if (!username.Contains("+")) return;
var split = username.Split('+').ToList();
var name = split[0];
var alias = split[1];

But this does would not work for multiple addresses. I would also prefer not to use regex (due to "now you have two problems").


Solution

  • The trick is using Linq to get all the alias except the first, that corresponds with the name:

        var addr = new MailAddress("name+alias@email.com");
        var username = addr.User;
        var domain = addr.Host;
    
        if (!username.Contains("+")) return;
        var split = username.Split('+').ToList();
        var name = split[0];
        var alias = split.Skip(1);