package main import ( "bufio" "log" "os" "regexp" "strings" "time" mail "github.com/xhit/go-simple-mail" //"github.com/xhit/go-simple-mail/v2" ) //SEE https://github.com/xhit/go-simple-mail // CheckAddressMaillist func CheckAddressMaillist(maillist string) string { strings.Replace(maillist, "noreply@aske-futurskill.com;", "", -1) maillistArray := strings.Split(maillist, ";") var index = 0 re := regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$") var newMaillist = "" for _, elem := range maillistArray { if re.MatchString(elem) { if index > 0 { newMaillist += ";" } newMaillist += elem index++ } } return newMaillist } // GetMailtoFile func GetMailtoFile(filename string) []string { file, err := os.Open(filename) if err != nil { log.Panic(err) } scanner := bufio.NewScanner(file) scanner.Split(bufio.ScanLines) var txtlines []string for scanner.Scan() { txtlines = append(txtlines, scanner.Text()) } file.Close() return txtlines } // PrepareMail ... func PrepareMail(email string, htmlBody string, imageList []string) *mail.Email { email := mail.NewMSG() email.SetFrom("From Support ASkE ") email.AddTo("support@aske-futurskill.com") email.AddBcc(maillingList) email.SetSubject("[TEST] MAILLING") email.SetBody(mail.TextHTML, htmlBody) for image := range imageList { email.AddInline(string.Split(imageList, ';')[0], string.Split(imageList, ';')[1]) } return email } func main() { filename := os.Args[1] smtpServ := xmail.NewSMTPClient() server.Host = "in-v3.mailjet.com" server.Port = 587 server.Username = "c4832eafdd5b13635a5d1273cb998d3f" server.Password = "ad985e178e340b85e192097b02026429" server.Encryption = mail.EncryptionTLS // smtpServ.Authentication = mail.AuthPlain smtpServ.KeepAlive = false smtpServ.ConnectTimeout = 10 * time.Second smtpServ.SendTimeout = 10 * time.Second smtpClient, err := smtpServ.Connect() if err != nil { log.Fatal(err) } maillingList := GetMailtoFile() for email := range maillingList { email := PrepareMail(email) err = email.Send(smtpClient) if err != nil { log.Println(err) } else { log.Println("Email sent") } } }