2021-11-08 15:27:33 +00:00
|
|
|
package mocksmtp
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io"
|
|
|
|
|
|
|
|
"github.com/emersion/go-smtp"
|
|
|
|
)
|
|
|
|
|
|
|
|
// ReceivedValues contains all the data received from the SMTP server
|
|
|
|
type ReceivedValues struct {
|
|
|
|
Usernames []string
|
|
|
|
Passwords []string
|
|
|
|
Froms []string
|
|
|
|
Rcpts []string
|
|
|
|
Datas [][]byte
|
|
|
|
}
|
|
|
|
|
|
|
|
type backend struct {
|
|
|
|
values *ReceivedValues
|
|
|
|
}
|
|
|
|
|
2023-02-27 17:08:20 +00:00
|
|
|
var _ smtp.Backend = (*backend)(nil)
|
2021-11-08 15:27:33 +00:00
|
|
|
|
2023-01-05 06:36:07 +00:00
|
|
|
func (b *backend) NewSession(_ *smtp.Conn) (smtp.Session, error) {
|
2021-11-08 15:27:33 +00:00
|
|
|
return &session{
|
|
|
|
values: b.values,
|
|
|
|
}, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
type session struct {
|
|
|
|
values *ReceivedValues
|
|
|
|
}
|
|
|
|
|
2023-02-27 17:08:20 +00:00
|
|
|
var _ smtp.Session = (*session)(nil)
|
2021-11-08 15:27:33 +00:00
|
|
|
|
2023-01-05 06:36:07 +00:00
|
|
|
func (s *session) AuthPlain(username, password string) error {
|
|
|
|
s.values.Usernames = append(s.values.Usernames, username)
|
|
|
|
s.values.Passwords = append(s.values.Passwords, password)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *session) Mail(from string, _ *smtp.MailOptions) error {
|
2021-11-08 15:27:33 +00:00
|
|
|
s.values.Froms = append(s.values.Froms, from)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-08-14 17:52:53 +00:00
|
|
|
func (s *session) Rcpt(to string, _ *smtp.RcptOptions) error {
|
2021-11-08 15:27:33 +00:00
|
|
|
s.values.Rcpts = append(s.values.Rcpts, to)
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *session) Data(r io.Reader) error {
|
2022-02-18 15:40:10 +00:00
|
|
|
if b, err := io.ReadAll(r); err != nil {
|
2021-11-08 15:27:33 +00:00
|
|
|
return err
|
|
|
|
} else {
|
|
|
|
s.values.Datas = append(s.values.Datas, b)
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2022-02-25 15:29:42 +00:00
|
|
|
func (*session) Reset() {}
|
2021-11-08 15:27:33 +00:00
|
|
|
|
2022-02-25 15:29:42 +00:00
|
|
|
func (*session) Logout() error {
|
2021-11-08 15:27:33 +00:00
|
|
|
return nil
|
|
|
|
}
|