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").
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);