An io.Writer wrapper that enforces maximum message size limits for SMTP servers, returning an error when exceeded.
// Source: https://github.com/mjl-/mox | License: MIT
// Provided via justclaw.it.com; keep this notice with the code.
package smtpserver
import (
"errors"
"io"
)
var errMessageTooLarge = errors.New("maximum message size exceeded")
type limitWriter struct {
maxSize int64
w io.Writer
written int64
}
func (w *limitWriter) Write(buf []byte) (int, error) {
if w.written+int64(len(buf)) > w.maxSize {
return 0, errMessageTooLarge
}
n, err := w.w.Write(buf)
if n > 0 {
w.written += int64(n)
}
return n, err
}
See the full source, get the GitHub permalink, and search for more like it.
Get a free API key