Define an smtp.Envelope that can be delivered to an smtp.Server.
[mailpopbox.git] / smtp / server.go
1 package smtp
2
3 import (
4 "crypto/tls"
5 "net"
6 "net/mail"
7 )
8
9 type ReplyLine struct {
10 Code int
11 Message string
12 }
13
14 var (
15 ReplyOK = ReplyLine{250, "OK"}
16 ReplyBadSyntax = ReplyLine{501, "syntax error"}
17 ReplyBadSequence = ReplyLine{503, "bad sequence of commands"}
18 )
19
20 type Envelope struct {
21 RemoteAddr net.Addr
22 EHLO string
23 MailFrom mail.Address
24 RcptTo []mail.Address
25 Data []byte
26 }
27
28 type Server interface {
29 Name() string
30 TLSConfig() *tls.Config
31 OnEHLO() *ReplyLine
32 OnMessageDelivered(Envelope) *ReplyLine
33 }