package mail
import (
"errors"
"fmt"
"strings"
)
type Address struct {
User string
Domain string
}
func NewAddress(emailaddr string) (*Address, error) {
parts := strings.Split(emailaddr, "@")
if len(parts) != 2 {
return nil, errors.New(fmt.Sprintf("%s is not a valid email address", emailaddr))
}
// convert domain to lower for easy grouping, but not username
// it's up to the receiving mail server to determine if the username is case sensitive,
// so we must treat it as if it is
return &Address{parts[0], strings.ToLower(parts[1])}, nil
}
func (a *Address) String() string {
return fmt.Sprintf("%s@%s", a.User, a.Domain)
}
func (a *Address) SmtpFormat() string {
return fmt.Sprintf("<%s@%s>", a.User, a.Domain)
}