2018-03-05 23:37:54 +00:00
|
|
|
package smtp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io"
|
|
|
|
"log"
|
|
|
|
)
|
|
|
|
|
2018-03-06 01:32:06 +00:00
|
|
|
type Handler interface {
|
2018-03-08 00:17:44 +00:00
|
|
|
ServeSMTP(from string, to []string, r io.Reader) error
|
2018-03-06 01:32:06 +00:00
|
|
|
}
|
|
|
|
|
2018-03-05 23:37:54 +00:00
|
|
|
type Session struct {
|
2018-03-08 00:17:44 +00:00
|
|
|
ID string
|
2018-03-06 01:32:06 +00:00
|
|
|
Handler Handler
|
2018-03-05 23:37:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Session) Send(from string, to []string, r io.Reader) error {
|
2018-06-26 03:08:51 +01:00
|
|
|
log.Printf("session=%s from=%s to=%#v", s.ID, from, to)
|
2018-03-05 23:37:54 +00:00
|
|
|
|
2018-03-08 00:17:44 +00:00
|
|
|
// TODO: a chain of middlewares here
|
2018-03-09 03:20:22 +00:00
|
|
|
return s.Handler.ServeSMTP(from, to, r)
|
2018-03-05 23:37:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *Session) Logout() error {
|
2018-06-26 03:08:51 +01:00
|
|
|
log.Printf("Ending session %s", s.ID)
|
2018-03-05 23:37:54 +00:00
|
|
|
|
|
|
|
return nil
|
|
|
|
}
|