mirror of
https://github.com/wneessen/go-mail.git
synced 2024-09-19 02:42:47 +02:00
69 lines
2.1 KiB
Go
69 lines
2.1 KiB
Go
|
package mail
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// List of SendError errors
|
||
|
var (
|
||
|
// ErrGetSender is returned if the Msg.GetSender method fails during a Client.Send
|
||
|
ErrGetSender = errors.New("getting sender address")
|
||
|
|
||
|
// ErrGetRcpts is returned if the Msg.GetRecipients method fails during a Client.Send
|
||
|
ErrGetRcpts = errors.New("getting recipient addresses")
|
||
|
|
||
|
// ErrSMTPMailFrom is returned if the Msg delivery failed when sending the MAIL FROM command
|
||
|
// to the sending SMTP server
|
||
|
ErrSMTPMailFrom = errors.New("sending SMTP MAIL FROM command")
|
||
|
|
||
|
// ErrSMTPRcptTo is returned if the Msg delivery failed when sending the RCPT TO command
|
||
|
// to the sending SMTP server
|
||
|
ErrSMTPRcptTo = errors.New("sending SMTP RCPT TO command")
|
||
|
|
||
|
// ErrSMTPData is returned if the Msg delivery failed when sending the DATA command
|
||
|
// to the sending SMTP server
|
||
|
ErrSMTPData = errors.New("sending SMTP DATA command")
|
||
|
|
||
|
// ErrSMTPDataClose is returned if the Msg delivery failed when trying to close the
|
||
|
// Client data writer
|
||
|
ErrSMTPDataClose = errors.New("closing SMTP DATA writer")
|
||
|
|
||
|
// ErrSMTPReset is returned if the Msg delivery failed when sending the RSET command
|
||
|
// to the sending SMTP server
|
||
|
ErrSMTPReset = errors.New("sending SMTP RESET command")
|
||
|
|
||
|
// ErrWriteContent is returned if the Msg delivery failed when sending Msg content
|
||
|
// to the Client writer
|
||
|
ErrWriteContent = errors.New("sending message content")
|
||
|
|
||
|
// ErrConnCheck is returned if the Msg delivery failed when checking if the SMTP
|
||
|
// server connection is still working
|
||
|
ErrConnCheck = errors.New("checking SMTP connection")
|
||
|
)
|
||
|
|
||
|
// SendError is an error wrapper for delivery errors of the Msg
|
||
|
type SendError struct {
|
||
|
Err error
|
||
|
details []error
|
||
|
rcpt []string
|
||
|
}
|
||
|
|
||
|
// Error implements the error interface for the SendError type
|
||
|
func (e SendError) Error() string {
|
||
|
var em strings.Builder
|
||
|
_, _ = fmt.Fprintf(&em, "client_send: %s", e.Err)
|
||
|
if len(e.details) > 0 {
|
||
|
for i := range e.details {
|
||
|
em.WriteString(fmt.Sprintf(", error_details: %s", e.details[i]))
|
||
|
}
|
||
|
}
|
||
|
if len(e.rcpt) > 0 {
|
||
|
for i := range e.rcpt {
|
||
|
em.WriteString(fmt.Sprintf(", rcpt: %s", e.rcpt[i]))
|
||
|
}
|
||
|
}
|
||
|
return em.String()
|
||
|
}
|