Skip to content
This repository was archived by the owner on Nov 28, 2024. It is now read-only.

Commit f20f94a

Browse files
author
Julius Foitzik
committed
add more details when failing to parse email addresses to make finding problems with input easier
1 parent f59b9b8 commit f20f94a

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

send.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,17 @@ func send(s Sender, m *Message) error {
6262
}
6363

6464
func (m *Message) getFrom() (string, error) {
65+
fieldName := "Sender"
6566
from := m.header["Sender"]
6667
if len(from) == 0 {
6768
from = m.header["From"]
6869
if len(from) == 0 {
6970
return "", errors.New(`gomail: invalid message, "From" field is absent`)
7071
}
72+
fieldName = "From"
7173
}
7274

73-
return parseAddress(from[0])
75+
return parseAddress(fieldName, from[0])
7476
}
7577

7678
func (m *Message) getRecipients() ([]string, error) {
@@ -85,7 +87,7 @@ func (m *Message) getRecipients() ([]string, error) {
8587
for _, field := range []string{"To", "Cc", "Bcc"} {
8688
if addresses, ok := m.header[field]; ok {
8789
for _, a := range addresses {
88-
addr, err := parseAddress(a)
90+
addr, err := parseAddress(field, a)
8991
if err != nil {
9092
return nil, err
9193
}
@@ -107,10 +109,10 @@ func addAddress(list []string, addr string) []string {
107109
return append(list, addr)
108110
}
109111

110-
func parseAddress(field string) (string, error) {
111-
addr, err := stdmail.ParseAddress(field)
112+
func parseAddress(fieldName, fieldValue string) (string, error) {
113+
addr, err := stdmail.ParseAddress(fieldValue)
112114
if err != nil {
113-
return "", fmt.Errorf("gomail: invalid address %q: %v", field, err)
115+
return "", fmt.Errorf("gomail: invalid address %q for field %q: %v", fieldValue, fieldName, err)
114116
}
115117
return addr.Address, nil
116118
}

0 commit comments

Comments
 (0)