func NotifyEmail(cfg *Config, o *Object, r *Revision) error { var ( e *email.Email err error ) // First version. if r.Version == 1 { e, err = newObjectEmail(cfg, o) } else { e, err = changedObjectEmail(cfg, o, r) } if err != nil { return err } q := bson.M{ "subscribed": true, } p := bson.M{ "email": 1, } var subs []*Subscriber if err = cfg.Mongo.Subscribers().Find(q).Select(p).All(&subs); err != nil { return err } // No subscribers. if len(subs) == 0 { return nil } e.From = cfg.SMTP.From e.To = make([]string, 1) for _, sub := range subs { e.To[0] = sub.Email if err = e.Send(cfg.SMTP.Addr(), cfg.SMTP.Auth()); err != nil { log.Printf("error sending email: %s", err) } } return nil }