Skip to content

Commit

Permalink
Initialize address header map and enforce single 'From' address.
Browse files Browse the repository at this point in the history
This commit ensures that the address header map is properly initialized before assigning addresses to it. Additionally, it enforces the rule that only a single 'From' address is allowed, preventing multiple addresses from being set for the 'From' header. These misses were found while working on the enhanced testing suite
  • Loading branch information
wneessen committed Oct 25, 2024
1 parent 7d352bc commit 08fe44c
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion msg.go
Original file line number Diff line number Diff line change
Expand Up @@ -583,6 +583,9 @@ func (m *Msg) SetAddrHeader(header AddrHeader, values ...string) error {
// References:
// - https://datatracker.ietf.org/doc/html/rfc5322#section-3.4
func (m *Msg) SetAddrHeaderIgnoreInvalid(header AddrHeader, values ...string) {
if m.addrHeader == nil {
m.addrHeader = make(map[AddrHeader][]*mail.Address)
}
var addresses []*mail.Address
for _, addrVal := range values {
address, err := mail.ParseAddress(m.encodeString(addrVal))
Expand All @@ -591,7 +594,14 @@ func (m *Msg) SetAddrHeaderIgnoreInvalid(header AddrHeader, values ...string) {
}
addresses = append(addresses, address)
}
m.addrHeader[header] = addresses
switch header {
case HeaderFrom:
if len(addresses) > 0 {
m.addrHeader[header] = []*mail.Address{addresses[0]}
}
default:
m.addrHeader[header] = addresses
}
}

// EnvelopeFrom sets the envelope from address for the Msg.
Expand Down

0 comments on commit 08fe44c

Please sign in to comment.