34 lines
860 B
Go

package arn
import (
"context"
"fmt"
"time"
"github.com/mailgun/mailgun-go/v3"
)
// HTMLEmailRenderer is the instance used for rendering emails.
var HTMLEmailRenderer EmailRenderer
// EmailRenderer is an interface for rendering HTML emails.
type EmailRenderer interface {
Notification(notification *Notification) string
}
// SendEmail sends an e-mail.
func SendEmail(email string, subject string, html string) error {
mg := mailgun.NewMailgun(APIKeys.Mailgun.Domain, APIKeys.Mailgun.PrivateKey)
sender := fmt.Sprintf("Anime Notifier <notifications@%s>", APIKeys.Mailgun.Domain)
message := mg.NewMessage(sender, subject, "", email)
message.SetHtml(html)
// Allow a 10-second timeout
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
defer cancel()
// Send the message
_, _, err := mg.Send(ctx, message)
return err
}