Send implements email.Sender.
(message *email.Message)
| 63 | |
| 64 | // Send implements email.Sender. |
| 65 | func (md *MailDir) Send(message *email.Message) (err error) { |
| 66 | m := gomail.NewMessage(md.messageSettings...) |
| 67 | m.SetAddressHeader("From", md.emailConfig.SenderAddress, md.emailConfig.SenderName) |
| 68 | m.SetAddressHeader("To", message.RecipientAddress, message.RecipientName) |
| 69 | m.SetHeader("Subject", message.Subject) |
| 70 | if message.TextBody != "" { |
| 71 | m.AddAlternative("text/plain", message.TextBody) |
| 72 | } |
| 73 | if message.HTMLBody != "" { |
| 74 | m.AddAlternative("text/html", message.HTMLBody) |
| 75 | } |
| 76 | f, err := os.OpenFile( |
| 77 | filepath.Join(md.dir, fmt.Sprintf("%s.eml", md.ulid().String())), |
| 78 | os.O_WRONLY|os.O_CREATE|os.O_EXCL, |
| 79 | 0o644, |
| 80 | ) |
| 81 | defer func() { |
| 82 | if closeErr := f.Close(); err == nil { |
| 83 | err = closeErr |
| 84 | } |
| 85 | }() |
| 86 | _, err = m.WriteTo(f) |
| 87 | return err |
| 88 | } |