diff --git a/internal/storage/tags.go b/internal/storage/tags.go index 3341e70..2dec4db 100644 --- a/internal/storage/tags.go +++ b/internal/storage/tags.go @@ -13,7 +13,7 @@ import ( ) var ( - addressPlusRe = regexp.MustCompile(`^(.*){1,}\+(.*)@`) + addressPlusRe = regexp.MustCompile(`(?U)^(.*){1,}\+(.*)@`) ) // SetMessageTags will set the tags for a given database ID @@ -246,25 +246,25 @@ func (d DBMailSummary) tagsFromPlusAddresses() string { tags := []string{} for _, c := range d.To { matches := addressPlusRe.FindAllStringSubmatch(c.String(), 1) - if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { - tags = append(tags, matches[0][2]) + if len(matches) == 1 { + tags = append(tags, strings.Split(matches[0][2], "+")...) } } for _, c := range d.Cc { matches := addressPlusRe.FindAllStringSubmatch(c.String(), 1) - if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { - tags = append(tags, matches[0][2]) + if len(matches) == 1 { + tags = append(tags, strings.Split(matches[0][2], "+")...) } } for _, c := range d.Bcc { matches := addressPlusRe.FindAllStringSubmatch(c.String(), 1) - if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { - tags = append(tags, matches[0][2]) + if len(matches) == 1 { + tags = append(tags, strings.Split(matches[0][2], "+")...) } } matches := addressPlusRe.FindAllStringSubmatch(d.From.String(), 1) - if len(matches) == 1 && config.ValidTagRegexp.MatchString(matches[0][2]) { - tags = append(tags, matches[0][2]) + if len(matches) == 1 { + tags = append(tags, strings.Split(matches[0][2], "+")...) } return strings.Join(tags, ",")