| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 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 <noreply@aske-futurskill.com>")
- 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")
- }
- }
- }
|