package providers import ( "git.wenlab.co/joe/beaconfire" h2t "github.com/jaytaylor/html2text" mailgun "github.com/mailgun/mailgun-go" ) const ( BEACON_NAME_MAILGUN = "mailgun" ) type OptionsMailgun struct { Domain string ApiKey string DisableTracking bool From string To []string } type mailgunfire struct { opt *OptionsMailgun } var _ beaconfire.BeaconFire = &mailgunfire{} func NewMailgunfire(opt *OptionsMailgun) *mailgunfire { return &mailgunfire{opt: opt} } func (c mailgunfire) Name() string { return BEACON_NAME_MAILGUN } func (c *mailgunfire) Send(bp *beaconfire.BeaconMessage) error { if len(c.opt.To) == 0 { return beaconfire.ErrNoReceiver } mg := mailgun.NewMailgun(c.opt.Domain, c.opt.ApiKey) content := bp.Content inHtml := true //format == "html" if inHtml { if t, err := h2t.FromString(bp.Content); err == nil { content = t } } msg := mg.NewMessage(c.opt.From, bp.Title, content, c.opt.To...) if inHtml { msg.SetHtml(content) } msg.SetTracking(!c.opt.DisableTracking) msg.SetTrackingClicks(!c.opt.DisableTracking) msg.SetTrackingOpens(!c.opt.DisableTracking) _, _, err := mg.Send(msg) return err }