/
validation.go
42 lines (38 loc) · 1.07 KB
/
validation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package mailing
import "regexp"
// validateEmailAddress validates the given email is a valid email address.
func validateEmailAddress(email string) bool {
exp := regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
return exp.MatchString(email)
}
// validateEmail validates that the given parameters for an email are valid.
func validateEmail(sender string, recipients []string, cc []string, bcc []string, data any) error {
if len(recipients) == 0 {
return ErrEmptyRecipientList
}
if len(sender) == 0 {
return ErrEmptySender
}
for _, r := range recipients {
if ok := validateEmailAddress(r); !ok {
return ErrInvalidRecipient
}
}
if ok := validateEmailAddress(sender); !ok {
return ErrInvalidSender
}
for _, r := range cc {
if ok := validateEmailAddress(r); !ok {
return ErrInvalidRecipient
}
}
for _, r := range bcc {
if ok := validateEmailAddress(r); !ok {
return ErrInvalidRecipient
}
}
if data == nil {
return ErrInvalidData
}
return nil
}