lotus/sendmail/fake/fake-smtp.go

46 lines
840 B
Go
Raw Normal View History

2023-08-21 00:26:22 +01:00
package fake
import (
"github.com/emersion/go-smtp"
"io"
"log"
)
type SmtpBackend struct {
Debug chan []byte
}
func (f *SmtpBackend) NewSession(c *smtp.Conn) (smtp.Session, error) {
return &SmtpSession{f.Debug}, nil
}
type SmtpSession struct {
Debug chan []byte
}
func (f *SmtpSession) Reset() {}
func (f *SmtpSession) Logout() error { return nil }
func (f *SmtpSession) AuthPlain(username, password string) error { return nil }
func (f *SmtpSession) Mail(from string, opts *smtp.MailOptions) error {
log.Println("MAIL " + from)
f.Debug <- []byte("MAIL " + from + "\n")
return nil
}
func (f *SmtpSession) Rcpt(to string) error {
f.Debug <- []byte("RCPT " + to + "\n")
return nil
}
func (f *SmtpSession) Data(r io.Reader) error {
all, err := io.ReadAll(r)
if err != nil {
return err
}
f.Debug <- all
return nil
}