-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathmailserver.go
45 lines (42 loc) · 930 Bytes
/
mailserver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package main
import (
"fmt"
"github.com/alash3al/go-smtpsrv"
"strings"
)
type mailContent struct {
from string
to string
title string
content string
}
func handler(c *smtpsrv.Context) error {
UserMail := c.To().String()
UserMail = strings.Trim(UserMail, "<>")
st := strings.Split(UserMail, "@")
s := st[0]
if st[1] != subDomain {
return fmt.Errorf("Invalid domain")
}
//msg, _ := mail.ReadMessage(c)
msg, _ := c.Parse()
content := mailContent{
from: strings.Trim(c.From().String(), "<>"),
title: msg.Subject,
content: msg.TextBody,
}
if mailBox[s] == nil {
mailBox[s] = make([]mailContent, 0)
}
mailBox[s] = append(mailBox[s], content)
return nil
}
func startSMTPServer(subDomain string) {
cfg := smtpsrv.ServerConfig{
BannerDomain: subDomain,
ListenAddr: ":25",
MaxMessageBytes: 5 * 1024,
Handler: handler,
}
fmt.Println(smtpsrv.ListenAndServe(&cfg))
}