diff --git a/src/net/mail/message.go b/src/net/mail/message.go index 14f839a03077c1..e4f6e1ddfbff63 100644 --- a/src/net/mail/message.go +++ b/src/net/mail/message.go @@ -549,7 +549,7 @@ func (p *addrParser) consumeAddrSpec() (spec string, err error) { // domain = dot-atom / domain-literal var domain string - p.skipSpace() + if p.empty() { return "", errors.New("mail: no domain in addr-spec") } diff --git a/src/net/mail/message_test.go b/src/net/mail/message_test.go index dad9c367f3e451..e1ea4a5728b1d8 100644 --- a/src/net/mail/message_test.go +++ b/src/net/mail/message_test.go @@ -825,6 +825,36 @@ func TestAddressParsing(t *testing.T) { Address: "jdoe@[192.168.0.1]", }}, }, + // No whitespace allowed in domain + { + `jdoe@machine.example`, // should pass + // `jdoe@ machine.example`, // should fail + []*Address{{ + Address: "jdoe@machine.example", + }}, + }, + { + `John Doe `, // should pass + // `John Doe `, // should fail + []*Address{{ + Name: "John Doe", + Address: "jdoe@machine.example", + }}, + }, + { + ` , joe@where.test,,John ,,`, // should pass + // ` , joe@where.test,,John ,,`, // should fail + []*Address{ + { + Name: "", + Address: "joe@where.test", + }, + { + Name: "John", + Address: "jdoe@one.test", + }, + }, + }, } for _, test := range tests { if len(test.exp) == 1 {