main.go 1.9 KB

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