package providers import ( "git.wenlab.co/joe/beaconfire" h2t "github.com/jaytaylor/html2text" mailgun "github.com/mailgun/mailgun-go" ) const ( MAILGUNFIRE_NAME = "mailgunfire" ) type OptionsMailgunfire struct { Domain string ApiKey string DisableTracking bool } type mailgunfire struct { opt *OptionsMailgunfire } var _ beaconfire.BeaconFire = &mailgunfire{} func NewMailgunfire(opt *OptionsMailgunfire) *mailgunfire { return &mailgunfire{opt: opt} } func (c mailgunfire) Name() string { return MAILGUNFIRE_NAME } func (c *mailgunfire) Send(bp *beaconfire.BeaconParam) error { if len(bp.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(bp.From, bp.Title, content, bp.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 }