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