-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathemail.go
executable file
·89 lines (72 loc) · 2.21 KB
/
email.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package main
import (
"fmt"
"log"
"time"
"github.com/google/uuid"
mail "github.com/xhit/go-simple-mail/v2"
)
type Email struct {
HOST string
USERNAME string
PASSWORD string
PORT int
}
func SendCode(to, code, id string) error {
server := mail.NewSMTPClient()
server.Host = config.EMAIL.HOST
server.Port = config.EMAIL.PORT
server.Username = config.EMAIL.USERNAME
server.Password = config.EMAIL.PASSWORD
server.Encryption = mail.EncryptionSTARTTLS
server.KeepAlive = false
server.ConnectTimeout = 10 * time.Second
server.SendTimeout = 10 * time.Second
// server.TLSConfig = &tls.Config{InsecureSkipVerify: true}
smtpClient, err := server.Connect()
if err != nil {
return err
}
email := mail.NewMSG()
email.SetFrom(config.PRODUCT_NAME + " <" + config.EMAIL.USERNAME + ">").
AddTo(to).
SetSubject("Confirm registration")
msgUUID, _ := uuid.NewRandom()
msgID := fmt.Sprintf("<%s@"+config.SELF_DOMAIN_NAME+">", msgUUID.String())
email.AddHeader("Message-ID", msgID)
email.SetBody(mail.TextHTML, "<p><h1>Here is a link to sign into "+config.PRODUCT_NAME+" :)</h1></p><p><a href=\""+config.CLIENT_DOMAIN+"/auth/"+id+"/"+code+"\">Enjoy</a></p>")
err = email.Send(smtpClient)
if err != nil {
return err
}
return nil
}
func ContactMe(name, sender, subject, message string) error {
server := mail.NewSMTPClient()
server.Host = config.EMAIL.HOST
server.Port = config.EMAIL.PORT
server.Username = config.EMAIL.USERNAME
server.Password = config.EMAIL.PASSWORD
server.Encryption = mail.EncryptionSTARTTLS
server.KeepAlive = false
server.ConnectTimeout = 10 * time.Second
server.SendTimeout = 10 * time.Second
// server.TLSConfig = &tls.Config{InsecureSkipVerify: true}
smtpClient, err := server.Connect()
if err != nil {
log.Println(err)
}
email := mail.NewMSG()
email.SetFrom(config.PRODUCT_NAME + " <" + config.EMAIL.USERNAME + ">").
AddTo(config.ADMIN_EMAIL).
SetSubject(subject)
msgUUID, _ := uuid.NewRandom()
msgID := fmt.Sprintf("<%s@"+config.SELF_DOMAIN_NAME+">", msgUUID.String())
email.AddHeader("Message-ID", msgID)
email.SetBody(mail.TextHTML, "<p>name: "+name+" - email: "+sender+"</p>"+message)
err = email.Send(smtpClient)
if err != nil {
log.Println(err)
}
return nil
}