| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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
- }
|