12 type ReplyLine struct {
18 ReplyOK = ReplyLine{250, "OK"}
19 ReplyBadSyntax = ReplyLine{501, "syntax error"}
20 ReplyBadSequence = ReplyLine{503, "bad sequence of commands"}
21 ReplyBadMailbox = ReplyLine{550, "mailbox unavailable"}
24 type Envelope struct {
34 func WriteEnvelopeForDelivery(w io.Writer, e Envelope) {
35 fmt.Fprintf(w, "Delivered-To: <%s>\r\n", e.RcptTo[0].Address)
36 fmt.Fprintf(w, "Return-Path: <%s>\r\n", e.MailFrom.Address)
40 type Server interface {
42 TLSConfig() *tls.Config
44 VerifyAddress(mail.Address) ReplyLine
45 OnMessageDelivered(Envelope) *ReplyLine
48 type EmptyServerCallbacks struct{}
50 func (*EmptyServerCallbacks) TLSConfig() *tls.Config {
54 func (*EmptyServerCallbacks) OnEHLO() *ReplyLine {
58 func (*EmptyServerCallbacks) VerifyAddress(mail.Address) ReplyLine {
62 func (*EmptyServerCallbacks) OnMessageDelivered(Envelope) *ReplyLine {