mail.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package main
  2. import(
  3. "crypto/tls"
  4. "gopkg.in/gomail.v2"
  5. "966.it/ini"
  6. "966.it/opt"
  7. "gopkg.in/ini.v1"
  8. "fmt"
  9. "os"
  10. )
  11. func main() {
  12. var cfg *ini.File
  13. var mymail *ini.Section
  14. var err error
  15. iniFile := optp.Start()
  16. fmt.Println("parametro passato",iniFile)
  17. inip.GetIni(iniFile)
  18. cfg = inip.LoadIni()
  19. // sezione di prova per vedere cosa ritorna dal file
  20. fmt.Println(inip.GetMySection())
  21. mymail,err = cfg.GetSection("mail")
  22. if err != nil {
  23. fmt.Println("Errore nella lettura della sezione")
  24. fmt.Println(err)
  25. os.Exit(99)
  26. }
  27. keys := mymail.KeyStrings()
  28. for _,x := range keys {
  29. fmt.Println(x)
  30. }
  31. // nota... anziche' cercare le singole chiavi, si puo' generare un for
  32. // che sia in grado di scorrere l'elenco delle chiavi e nel caso ne trovi una
  33. // che corrisponde, assegnarla alla relativa variabile
  34. server := inip.GetMyKey("mail","server").String()
  35. porta,_ := inip.GetMyKey("mail","porta").Int()
  36. username := inip.GetMyKey("mail","username").String()
  37. password := inip.GetMyKey("mail","password").String()
  38. _from := inip.GetMyKey("mail","_from").String()
  39. _to := inip.GetMyKey("mail","_to").Strings(",")
  40. protocol := inip.GetMyKey("mail","protocol").String()
  41. _subject := inip.GetMyKey("mail","_subject").String()
  42. _body := inip.GetMyKey("mail","_text").String()
  43. for _,tos := range _to {
  44. m := gomail.NewMessage()
  45. m.SetHeader("From",_from)
  46. m.SetHeader("To",tos)
  47. m.SetHeader("Subject",_subject)
  48. m.SetBody("Text/plain",_body)
  49. d := gomail.NewDialer(server,porta,username,password)
  50. if protocol == "ssl" {
  51. d.SSL=true
  52. } else if protocol == "tls" {
  53. d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
  54. }
  55. // Send the email to Bob, Cora and Dan.
  56. if err := d.DialAndSend(m); err != nil {
  57. panic(err)
  58. }
  59. }
  60. }