main.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "io/ioutil"
  6. "log"
  7. "os"
  8. "regexp"
  9. "strings"
  10. "github.com/sendgrid/sendgrid-go"
  11. "github.com/sendgrid/sendgrid-go/helpers/mail"
  12. )
  13. //SEE https://github.com/xhit/go-simple-mail
  14. // CheckAddressMaillist ...
  15. func CheckAddressMaillist(maillist string) string {
  16. strings.Replace(maillist, "noreply@aske-futurskill.com;", "", -1)
  17. maillistArray := strings.Split(maillist, ";")
  18. var index = 0
  19. 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])?)*$")
  20. var newMaillist = ""
  21. for _, elem := range maillistArray {
  22. if re.MatchString(elem) {
  23. if index > 0 {
  24. newMaillist += ";"
  25. }
  26. newMaillist += elem
  27. index++
  28. }
  29. }
  30. return newMaillist
  31. }
  32. // GetMailtoFile ...
  33. func GetMailtoFile(filename string) []string {
  34. file, err := os.Open(filename)
  35. if err != nil {
  36. log.Panic(err)
  37. }
  38. scanner := bufio.NewScanner(file)
  39. scanner.Split(bufio.ScanLines)
  40. var txtlines []string
  41. for scanner.Scan() {
  42. txtlines = append(txtlines, scanner.Text())
  43. }
  44. file.Close()
  45. return txtlines
  46. }
  47. // FileHTMLToString ...
  48. func FileHTMLToString(filehtml string) string {
  49. b, err := ioutil.ReadFile(filehtml) // just pass the file name
  50. if err != nil {
  51. fmt.Print(err)
  52. }
  53. return string(b)
  54. }
  55. func main() {
  56. filemail := os.Args[1]
  57. subject := os.Args[2]
  58. filehtml := os.Args[3]
  59. from := mail.NewEmail("Support ASkE", "noreply@aske-futurskill.com")
  60. subject := subject
  61. to := mail.NewEmail("Example User", "test@example.com")
  62. plainTextContent := "and easy to do anywhere, even with Go"
  63. htmlContent := "<strong>and easy to do anywhere, even with Go</strong>"
  64. message := mail.NewSingleEmail(from, subject, to, plainTextContent, htmlContent)
  65. client := sendgrid.NewSendClient(os.Getenv("SENDGRID_API_KEY"))
  66. response, err := client.Send(message)
  67. if err != nil {
  68. log.Println(err)
  69. } else {
  70. fmt.Println(response.StatusCode)
  71. fmt.Println(response.Body)
  72. fmt.Println(response.Headers)
  73. }
  74. }
  75. /*
  76. func main() {
  77. filemail := os.Args[1]
  78. subject := os.Args[2]
  79. filehtml := os.Args[3]
  80. bodyHTML := FileHTMLToString(filehtml)
  81. maillingList := GetMailtoFile(filemail)
  82. for _, email := range maillingList {
  83. mailjetClient := mailjet.NewMailjetClient(os.Getenv("c4832eafdd5b13635a5d1273cb998d3f"), os.Getenv("ad985e178e340b85e192097b02026429"))
  84. messagesInfo := []mailjet.InfoMessagesV31{
  85. mailjet.InfoMessagesV31{
  86. From: &mailjet.RecipientV31{
  87. Email: "noreply@aske-futurskill.com",
  88. Name: "Support ASkE",
  89. },
  90. To: &mailjet.RecipientsV31{
  91. mailjet.RecipientV31{
  92. Email: email,
  93. },
  94. },
  95. Subject: subject,
  96. HTMLPart: bodyHTML,
  97. },
  98. }
  99. messages := mailjet.MessagesV31{Info: messagesInfo}
  100. res, err := mailjetClient.SendMailV31(&messages)
  101. if err != nil {
  102. log.Fatal(err)
  103. }
  104. fmt.Printf("Data: %+v\n", res)
  105. }
  106. }
  107. */
  108. /*
  109. func main() {
  110. filemail := os.Args[1]
  111. subject := os.Args[2]
  112. filehtml := os.Args[3]
  113. smtpServ := xmail.NewSMTPClient()
  114. smtpServ.Host = "in-v3.mailjet.com"
  115. smtpServ.Port = 587
  116. smtpServ.Username = "c4832eafdd5b13635a5d1273cb998d3f"
  117. smtpServ.Password = "ad985e178e340b85e192097b02026429"
  118. smtpServ.Encryption = mail.EncryptionTLS
  119. // smtpServ.Authentication = mail.AuthPlain
  120. smtpServ.KeepAlive = true
  121. smtpServ.ConnectTimeout = 10 * time.Second
  122. smtpServ.SendTimeout = 10 * time.Second
  123. smtpClient, err := smtpServ.Connect()
  124. if err != nil {
  125. log.Fatal(err)
  126. }
  127. bodyHTML := FileHTMLToString(filehtml)
  128. maillingList := GetMailtoFile(filemail)
  129. for _, email := range maillingList {
  130. fmt.Println(email)
  131. mail := PrepareMail(email, subject, bodyHTML)
  132. err = mail.Send(smtpClient)
  133. if err != nil {
  134. log.Println(err)
  135. } else {
  136. log.Println("Email sent")
  137. }
  138. }
  139. }
  140. */