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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
package main
import (
"bytes"
"fmt"
"html/template"
"io"
"os"
"encoding/csv"
"strconv"
"gopkg.in/gomail.v2"
)
type Customer struct {
Name string
email string
Anrede string
gender int
}
type MailList struct {
customers []Customer
}
var list []Customer
var filename string = "testlist.csv"
func init() {
//cryptexample()
fmt.Println(" Starting MassMailer\n ##################################\n")
initConf()
file, err := os.Open(config.Massmail.Listfile)
if err != nil {
panic(err)
}else{
fmt.Println("\n",config.Massmail.Listfile, "opened Successfully!")
}
defer file.Close()
reader := csv.NewReader(file)
reader.Comma = ';'
lineCount := 0
for {
line , erro := reader.Read()
if erro == io.EOF {
break
}else if erro != nil {
panic(erro)
}
gen, err := strconv.Atoi(line[2])
if err != nil {
panic(err)
}
anrede := config.Massmail.Anrede[(gen+1)]
cn := Customer{Name: line[0], email: line[1], Anrede: anrede, gender: gen}
list = append(list, cn)
fmt.Println(cn)
lineCount += 1
}
fmt.Println("\n All Customers:",lineCount)
}
func main() {
if isSure("Send the Mail to all Customers?"){
for _ , c := range list{
err := SendMail(c)
if err==nil{
fmt.Println("Sending Mail to",c.Anrede,c.Name,"Done Successful")
}else{
panic(err)
}
}
}else{
fmt.Println(" ok... bye then!")
}
}
func SendMail(cust Customer) error {
t, err := template.ParseFiles(config.Massmail.Mailfile)
if err != nil {
return err
}
buf := new(bytes.Buffer)
err = t.Execute(buf, cust)
if err != nil {
return err
}
pass := Decrypt(config.Mailacc.Accountpwd)
m := gomail.NewMessage()
m.SetHeader("From", m.FormatAddress(config.Mailacc.Address , config.Mailacc.Name))
m.SetHeader("To", cust.email)
//m.SetAddressHeader("Cc", "test@mail.com", "Dan")
m.SetHeader("Subject", config.Massmail.Subject)
m.SetBody("text/html", buf.String())
//m.Attach("someimage.jpg", gomail.Rename("logo.jpg"))
m.Embed(config.Massmail.Bannerfile)
d := gomail.NewDialer(config.Mailacc.Smtpurl, config.Mailacc.Port, config.Mailacc.Accountname, pass)
// Send the email to Bob, Cora and Dan.
if err := d.DialAndSend(m); err != nil {
fmt.Println("Connecting to Email Server Failed! Check your Accountname and Password\nError:")
panic(err)
}
return nil
}
|