// Vikunja is a to-do list application to facilitate your life. // Copyright 2018-2021 Vikunja and contributors. All rights reserved. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public Licensee as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public Licensee for more details. // // You should have received a copy of the GNU Affero General Public Licensee // along with this program. If not, see <https://www.gnu.org/licenses/>. package notifications import "code.vikunja.io/api/pkg/mail" // Mail is a mail message type Mail struct { from string to string subject string actionText string actionURL string greeting string introLines []string outroLines []string } // NewMail creates a new mail object with a default greeting func NewMail() *Mail { return &Mail{} } // From sets the from name and email address func (m *Mail) From(from string) *Mail { m.from = from return m } // To sets the recipient of the mail message func (m *Mail) To(to string) *Mail { m.to = to return m } // Subject sets the subject of the mail message func (m *Mail) Subject(subject string) *Mail { m.subject = subject return m } // Greeting sets the greeting of the mail message func (m *Mail) Greeting(greeting string) *Mail { m.greeting = greeting return m } // Action sets any action a mail might have func (m *Mail) Action(text, url string) *Mail { m.actionText = text m.actionURL = url return m } // Line adds a line of text to the mail func (m *Mail) Line(line string) *Mail { if m.actionURL == "" { m.introLines = append(m.introLines, line) return m } m.outroLines = append(m.outroLines, line) return m } // SendMail passes the notification to the mailing queue for sending func SendMail(m *Mail) error { opts, err := RenderMail(m) if err != nil { return err } mail.SendMail(opts) return nil }