1234567891011121314151617181920212223242526272829303132333435 |
- package dao
- import (
- "context"
- "strings"
- "gopkg.in/gomail.v2"
- )
- const (
- _MailBoxNotFound = "Mailbox not found"
- )
- // SendMail asynchronous send mail.
- func (d *Dao) SendMail(message *gomail.Message) {
- message.SetAddressHeader("From", d.email.Username, "merlin")
- d.cache.Do(context.TODO(), func(ctx context.Context) {
- d.SendMailIfFailed(message)
- })
- }
- // SendMailIfFailed Send Mail If Failed
- func (d *Dao) SendMailIfFailed(message *gomail.Message) {
- if err := d.email.DialAndSend(message); err != nil {
- if strings.Contains(err.Error(), _MailBoxNotFound) {
- headerMsg := message.GetHeader("Subject")
- headerMsg = append(headerMsg, "Mail Send Error:"+err.Error()+",Receiver:")
- headerMsg = append(headerMsg, message.GetHeader("To")...)
- message.SetHeader("To", d.c.Mail.NoticeOwner...)
- message.SetHeader("Subject", headerMsg...)
- d.email.DialAndSend(message)
- }
- }
- }
|