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
}