package notifier import ( "context" "fmt" "github.com/mailgun/mailgun-go/v3" "time" ) // Mailgun is service for sending emails type Mailgun struct { Domain string Recipient string From string } // Send is function for sending directly to API func (m Mailgun) Send(secret string, i *Information) error { mg := mailgun.NewMailgun(m.Domain, secret) content := `

Jenkins Operator Reconciled

Failed to do something

CR name: %s
Configuration type: %s
Status: %s
Powered by Jenkins Operator <3
` content = fmt.Sprintf(content, getStatusColor(i.Status, m), i.CrName, i.ConfigurationType, getStatusColor(i.Status, m), getStatusName(i.Status)) msg := mg.NewMessage(fmt.Sprintf("Jenkins Operator Notifier <%s>", m.From), "Jenkins Operator Status", "", m.Recipient) msg.SetHtml(content) ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) defer cancel() _, _, err := mg.Send(ctx, msg) if err != nil { return err } return nil }