mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-22 13:50:49 +01:00
Add affectedMsg field to SendError struct
Included the affected message in the SendError struct for better error tracking and debugging. This enhancement ensures that any errors encountered during the sending process can be directly associated with the specific message that caused them.
This commit is contained in:
parent
69e211682c
commit
0239318d94
1 changed files with 14 additions and 8 deletions
22
client.go
22
client.go
|
@ -793,7 +793,7 @@ func (c *Client) auth() error {
|
||||||
func (c *Client) sendSingleMsg(message *Msg) error {
|
func (c *Client) sendSingleMsg(message *Msg) error {
|
||||||
if message.encoding == NoEncoding {
|
if message.encoding == NoEncoding {
|
||||||
if ok, _ := c.smtpClient.Extension("8BITMIME"); !ok {
|
if ok, _ := c.smtpClient.Extension("8BITMIME"); !ok {
|
||||||
return &SendError{Reason: ErrNoUnencoded, isTemp: false}
|
return &SendError{Reason: ErrNoUnencoded, isTemp: false, affectedMsg: message}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
from, err := message.GetSender(false)
|
from, err := message.GetSender(false)
|
||||||
|
@ -813,14 +813,15 @@ func (c *Client) sendSingleMsg(message *Msg) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err = c.smtpClient.Mail(from); err != nil {
|
if err = c.smtpClient.Mail(from); err != nil {
|
||||||
retError := &SendError{Reason: ErrSMTPMailFrom, errlist: []error{err}, isTemp: isTempError(err)}
|
retError := &SendError{Reason: ErrSMTPMailFrom, errlist: []error{err}, isTemp: isTempError(err),
|
||||||
|
affectedMsg: message}
|
||||||
if resetSendErr := c.smtpClient.Reset(); resetSendErr != nil {
|
if resetSendErr := c.smtpClient.Reset(); resetSendErr != nil {
|
||||||
retError.errlist = append(retError.errlist, resetSendErr)
|
retError.errlist = append(retError.errlist, resetSendErr)
|
||||||
}
|
}
|
||||||
return retError
|
return retError
|
||||||
}
|
}
|
||||||
hasError := false
|
hasError := false
|
||||||
rcptSendErr := &SendError{}
|
rcptSendErr := &SendError{affectedMsg: message}
|
||||||
rcptSendErr.errlist = make([]error, 0)
|
rcptSendErr.errlist = make([]error, 0)
|
||||||
rcptSendErr.rcpt = make([]string, 0)
|
rcptSendErr.rcpt = make([]string, 0)
|
||||||
rcptNotifyOpt := strings.Join(c.dsnrntype, ",")
|
rcptNotifyOpt := strings.Join(c.dsnrntype, ",")
|
||||||
|
@ -842,23 +843,28 @@ func (c *Client) sendSingleMsg(message *Msg) error {
|
||||||
}
|
}
|
||||||
writer, err := c.smtpClient.Data()
|
writer, err := c.smtpClient.Data()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &SendError{Reason: ErrSMTPData, errlist: []error{err}, isTemp: isTempError(err)}
|
return &SendError{Reason: ErrSMTPData, errlist: []error{err}, isTemp: isTempError(err),
|
||||||
|
affectedMsg: message}
|
||||||
}
|
}
|
||||||
_, err = message.WriteTo(writer)
|
_, err = message.WriteTo(writer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &SendError{Reason: ErrWriteContent, errlist: []error{err}, isTemp: isTempError(err)}
|
return &SendError{Reason: ErrWriteContent, errlist: []error{err}, isTemp: isTempError(err),
|
||||||
|
affectedMsg: message}
|
||||||
}
|
}
|
||||||
message.isDelivered = true
|
message.isDelivered = true
|
||||||
|
|
||||||
if err = writer.Close(); err != nil {
|
if err = writer.Close(); err != nil {
|
||||||
return &SendError{Reason: ErrSMTPDataClose, errlist: []error{err}, isTemp: isTempError(err)}
|
return &SendError{Reason: ErrSMTPDataClose, errlist: []error{err}, isTemp: isTempError(err),
|
||||||
|
affectedMsg: message}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = c.Reset(); err != nil {
|
if err = c.Reset(); err != nil {
|
||||||
return &SendError{Reason: ErrSMTPReset, errlist: []error{err}, isTemp: isTempError(err)}
|
return &SendError{Reason: ErrSMTPReset, errlist: []error{err}, isTemp: isTempError(err),
|
||||||
|
affectedMsg: message}
|
||||||
}
|
}
|
||||||
if err = c.checkConn(); err != nil {
|
if err = c.checkConn(); err != nil {
|
||||||
return &SendError{Reason: ErrConnCheck, errlist: []error{err}, isTemp: isTempError(err)}
|
return &SendError{Reason: ErrConnCheck, errlist: []error{err}, isTemp: isTempError(err),
|
||||||
|
affectedMsg: message}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue