Как уже упоминалось в комментариях, вы можете использовать c.Text.ReadResponse()
:
package main
import (
"net/smtp"
)
func sendEmail(msg []byte) (code int, message string, err error) {
c, err := smtp.Dial("localhost:25")
if err != nil {
return
}
defer c.Quit() // make sure to quit the Client
if err = c.Mail("sender@example.org"); err != nil {
return
}
if err = c.Rcpt("recipient@example.net"); err != nil {
return
}
wc, err := c.Data()
if err != nil {
return
}
defer wc.Close() // make sure WriterCloser gets closed
_, err = wc.Write(msg)
if err != nil {
return
}
code, message, err = c.Text.ReadResponse(0)
return
}
code
, message
и любые err
теперь передаются вызывающей стороне, неиспользуйте log.Fatal
во всем коде, обработайте ошибку на вызывающей стороне.