diff --git a/README.md b/README.md index 2d8736c..15ece8f 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,8 @@ smtp: - to@email.com smtp_format: "{{data}}" subject: "Email subject" + smtp_html: false + smtp_disable_starttls: false googlechat: - id: "gc" diff --git a/pkg/providers/smtp/smtp.go b/pkg/providers/smtp/smtp.go index 5492dcb..a722cd4 100644 --- a/pkg/providers/smtp/smtp.go +++ b/pkg/providers/smtp/smtp.go @@ -2,6 +2,7 @@ package smtp import ( "fmt" + "strconv" "strings" "github.com/containrrr/shoutrrr" @@ -19,14 +20,16 @@ type Provider struct { } type Options struct { - ID string `yaml:"id,omitempty"` - Server string `yaml:"smtp_server,omitempty"` - Username string `yaml:"smtp_username,omitempty"` - Password string `yaml:"smtp_password,omitempty"` - FromAddress string `yaml:"from_address,omitempty"` - SMTPCC []string `yaml:"smtp_cc,omitempty"` - SMTPFormat string `yaml:"smtp_format,omitempty"` - Subject string `yaml:"subject,omitempty"` + ID string `yaml:"id,omitempty"` + Server string `yaml:"smtp_server,omitempty"` + Username string `yaml:"smtp_username,omitempty"` + Password string `yaml:"smtp_password,omitempty"` + FromAddress string `yaml:"from_address,omitempty"` + SMTPCC []string `yaml:"smtp_cc,omitempty"` + SMTPFormat string `yaml:"smtp_format,omitempty"` + Subject string `yaml:"subject,omitempty"` + HTML bool `yaml:"smtp_html,omitempty"` + DisableStartTLS bool `yaml:"smtp_disable_starttls,omitempty"` } func New(options []*Options, ids []string) (*Provider, error) { @@ -48,8 +51,10 @@ func (p *Provider) Send(message, CliFormat string) error { p.counter++ for _, pr := range p.SMTP { msg := utils.FormatMessage(message, utils.SelectFormat(CliFormat, pr.SMTPFormat), p.counter) - - url := fmt.Sprintf("smtp://%s:%s@%s/?fromAddress=%s&toAddresses=%s&subject=%s", pr.Username, pr.Password, pr.Server, pr.FromAddress, strings.Join(pr.SMTPCC, ","), pr.Subject) + url := fmt.Sprintf( + "smtp://%s:%s@%s/?fromAddress=%s&toAddresses=%s&subject=%s&UseHTML=%s&UseStartTLS=%s", + pr.Username, pr.Password, pr.Server, pr.FromAddress, strings.Join(pr.SMTPCC, ","), pr.Subject, strconv.FormatBool(pr.HTML), strconv.FormatBool(!pr.DisableStartTLS), + ) err := shoutrrr.Send(url, msg) if err != nil { err = errors.Wrap(err, fmt.Sprintf("failed to send smtp notification for id: %s ", pr.ID))