1
0
mirror of https://github.com/0rangebananaspy/authelia.git synced 2024-09-14 22:47:21 +07:00
authelia/internal/configuration/decode_hooks.go
James Elliott ab8f9b0697
fix(notifier): force use of sender email in smtp from cmd ()
This change addresses an issue with the usage of the full sender configuration option in the MAIL FROM SMTP command. If a user includes a name in the sender this shouldn't be sent in the MAIL FROM command, instead we should extract it and use just the email portion.

Fixes 
2021-11-30 22:15:21 +11:00

36 lines
741 B
Go

package configuration
import (
"fmt"
"net/mail"
"reflect"
"github.com/mitchellh/mapstructure"
)
// StringToMailAddressFunc decodes a string into a mail.Address.
func StringToMailAddressFunc() mapstructure.DecodeHookFunc {
return func(f reflect.Kind, t reflect.Kind, data interface{}) (value interface{}, err error) {
if f != reflect.String || t != reflect.TypeOf(mail.Address{}).Kind() {
return data, nil
}
dataStr := data.(string)
if dataStr == "" {
return mail.Address{}, nil
}
var (
mailAddress *mail.Address
)
mailAddress, err = mail.ParseAddress(dataStr)
if err != nil {
return nil, fmt.Errorf("could not parse '%s' as a RFC5322 address: %w", dataStr, err)
}
return *mailAddress, nil
}
}