package mail import "time" // MonitorEvent is a monitor state transition, as the control plane's // notification dispatcher sees it. It lives here rather than in server/ so that // the email templates and the caller agree on the fields without server's model // package leaking into shared. type MonitorEvent struct { MonitorName string Type string OldStatus string NewStatus string Message string Time time.Time // Down drives the pill and the subject verb. The caller decides it, since // only server/ knows which status strings mean down. Down bool } // SendMonitorAlert delivers one state-change notification to an SMTP // notification channel's recipients, which may be a comma-separated list. func (s Sender) SendMonitorAlert(to string, ev MonitorEvent) error { return s.sendTemplate(to, "", "monitoralert", ev) }