package main import ( "os" "github.com/wneessen/go-mail" ) type MailClient struct { client *mail.Client } type Mailer interface { SendCode(to string, code string) error } func (m MailClient) getMessage() (*mail.Msg, error) { message := mail.NewMsg() if err := message.From("auth@johncosta.tech"); err != nil { return nil, err } return message, nil } func CreateMailClient() (MailClient, error) { client, err := mail.NewClient( "smtp.mailbox.org", mail.WithSMTPAuth(mail.SMTPAuthPlain), mail.WithUsername(os.Getenv("EMAIL_USERNAME")), mail.WithPassword(os.Getenv("EMAIL_PASSWORD")), ) if err != nil { return MailClient{}, err } return MailClient{ client: client, }, nil }