main.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package main
  2. import (
  3. "bufio"
  4. "log"
  5. "os"
  6. "regexp"
  7. "strings"
  8. "time"
  9. mail "github.com/xhit/go-simple-mail"
  10. //"github.com/xhit/go-simple-mail/v2"
  11. )
  12. //SEE https://github.com/xhit/go-simple-mail
  13. // CheckAddressMaillist
  14. func CheckAddressMaillist(maillist string) string {
  15. strings.Replace(maillist, "noreply@aske-futurskill.com;", "", -1)
  16. maillistArray := strings.Split(maillist, ";")
  17. var index = 0
  18. 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])?)*$")
  19. var newMaillist = ""
  20. for _, elem := range maillistArray {
  21. if re.MatchString(elem) {
  22. if index > 0 {
  23. newMaillist += ";"
  24. }
  25. newMaillist += elem
  26. index++
  27. }
  28. }
  29. return newMaillist
  30. }
  31. // GetMailtoFile
  32. func GetMailtoFile(filename string) []string {
  33. file, err := os.Open(filename)
  34. if err != nil {
  35. log.Panic(err)
  36. }
  37. scanner := bufio.NewScanner(file)
  38. scanner.Split(bufio.ScanLines)
  39. var txtlines []string
  40. for scanner.Scan() {
  41. txtlines = append(txtlines, scanner.Text())
  42. }
  43. file.Close()
  44. return txtlines
  45. }
  46. // PrepareMail ...
  47. func PrepareMail(email string, htmlBody string, imageList []string) *mail.Email {
  48. email := mail.NewMSG()
  49. email.SetFrom("From Support ASkE <noreply@aske-futurskill.com>")
  50. email.AddTo("support@aske-futurskill.com")
  51. email.AddBcc(maillingList)
  52. email.SetSubject("[TEST] MAILLING")
  53. email.SetBody(mail.TextHTML, htmlBody)
  54. for image := range imageList {
  55. email.AddInline(string.Split(imageList, ';')[0], string.Split(imageList, ';')[1])
  56. }
  57. return email
  58. }
  59. func main() {
  60. filename := os.Args[1]
  61. smtpServ := xmail.NewSMTPClient()
  62. server.Host = "in-v3.mailjet.com"
  63. server.Port = 587
  64. server.Username = "c4832eafdd5b13635a5d1273cb998d3f"
  65. server.Password = "ad985e178e340b85e192097b02026429"
  66. server.Encryption = mail.EncryptionTLS
  67. // smtpServ.Authentication = mail.AuthPlain
  68. smtpServ.KeepAlive = false
  69. smtpServ.ConnectTimeout = 10 * time.Second
  70. smtpServ.SendTimeout = 10 * time.Second
  71. smtpClient, err := smtpServ.Connect()
  72. if err != nil {
  73. log.Fatal(err)
  74. }
  75. maillingList := GetMailtoFile()
  76. for email := range maillingList {
  77. email := PrepareMail(email)
  78. err = email.Send(smtpClient)
  79. if err != nil {
  80. log.Println(err)
  81. } else {
  82. log.Println("Email sent")
  83. }
  84. }
  85. }