Guest User

Untitled

a guest
Sep 6th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "net/mail"
  6. "net/smtp"
  7. "strings"
  8. )
  9.  
  10. var host = "127.0.0.1"
  11. var port = "25"
  12. var username = ""
  13. var password = ""
  14. var auth = smtp.PlainAuth("", username, password, host)
  15. var addr = host + ":" + port
  16.  
  17. func main() {
  18. fromName := "Fred"
  19. fromEmail := "fred@example.com"
  20. toNames := []string{"Ted"}
  21. toEmails := []string{"ted@example.com"}
  22. subject := "This is the subject of your email"
  23. body := "This is the body of your email"
  24. // Build RFC-2822 email
  25. toAddresses := []string{}
  26.  
  27. for i, _ := range toEmails {
  28. to := mail.Address{toNames[i], toEmails[i]}
  29. toAddresses = append(toAddresses, to.String())
  30. }
  31.  
  32. toHeader := strings.Join(toAddresses, ", ")
  33. from := mail.Address{fromName, fromEmail}
  34. fromHeader := from.String()
  35. subjectHeader := subject
  36. header := make(map[string]string)
  37. header["To"] = toHeader
  38. header["From"] = fromHeader
  39. header["Subject"] = subjectHeader
  40. header["Content-Type"] = `text/html; charset="UTF-8"`
  41. msg := ""
  42.  
  43. for k, v := range header {
  44. msg += fmt.Sprintf("%s: %s\r\n", k, v)
  45. }
  46.  
  47. msg += "\r\n" + body
  48. bMsg := []byte(msg)
  49. // Send using local postfix service
  50. c, err := smtp.Dial(addr)
  51.  
  52. if err != nil {
  53. return
  54. }
  55.  
  56. defer c.Close()
  57. if err = c.Mail(fromHeader); err != nil {
  58. return
  59. }
  60.  
  61. for _, addr := range toEmails {
  62. if err = c.Rcpt(addr); err != nil {
  63. return
  64. }
  65. }
  66.  
  67. w, err := c.Data()
  68. if err != nil {
  69. return
  70. }
  71. _, err = w.Write(bMsg)
  72. if err != nil {
  73. return
  74. }
  75.  
  76. err = w.Close()
  77. if err != nil {
  78. return
  79. }
  80.  
  81. err = c.Quit()
  82. // Or alternatively, send with remote service like Amazon SES
  83. // err = smtp.SendMail(addr, auth, fromEmail, toEmails, bMsg)
  84. // Handle response from local postfix or remote service
  85. if err != nil {
  86. return
  87. }
  88. }
Add Comment
Please, Sign In to add comment