main.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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.KeepAlive = false
  64. smtpServ.ConnectTimeout = 10 * time.Second
  65. smtpServ.SendTimeout = 10 * time.Second
  66. _, err := smtpServ.Connect()
  67. if err != nil {
  68. log.Fatal(err)
  69. }
  70. email := mail.NewMSG()
  71. email.SetFrom("From Support ASkE <noreply@aske-futurskill.com>")
  72. email.AddTo("support@aske-futurskill.com")
  73. email.AddBcc(GetMailtoFile(filename))
  74. email.SetSubject(subject)
  75. email.SetBody(mail.TextHTML, msg)
  76. if err != nil {
  77. log.Println(err)
  78. } else {
  79. log.Println("Email sent")
  80. }
  81. }