Guest User

Untitled

a guest
Apr 5th, 2018
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 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 := "Jefferson"
  19. fromEmail := "jeff@example.com"
  20. toNames := []string{"Pricila"}
  21. toEmails := []string{"pri@example.com"}
  22. subject := "This is the subject of your email"
  23. body := "This is the body of your email"
  24.  
  25. // Build RFC-2822 email
  26. toAddresses := []string{}
  27.  
  28. for i, _ := range toEmails {
  29. to := mail.Address{toNames[i], toEmails[i]}
  30. toAddresses = append(toAddresses, to.String())
  31. }
  32.  
  33. toHeader := strings.Join(toAddresses, ", ")
  34. from := mail.Address{fromName, fromEmail}
  35. fromHeader := from.String()
  36. subjectHeader := subject
  37. header := make(map[string]string)
  38. header["To"] = toHeader
  39. header["From"] = fromHeader
  40. header["Subject"] = subjectHeader
  41. header["Content-Type"] = `text/html; charset="UTF-8"`
  42. msg := ""
  43. for k, v := range header {
  44. msg += fmt.Sprintf("%s: %s\r\n", k, v)
  45. }
  46. msg += "\r\n" + body
  47. bMsg := []byte(msg)
  48. // Send using local postfix service
  49. c, err := smtp.Dial(addr)
  50. if err != nil {
  51. return
  52. }
  53. defer c.Close()
  54. if err = c.Mail(fromHeader); err != nil {
  55. return
  56. }
  57. for _, addr := range toEmails {
  58. if err = c.Rcpt(addr); err != nil {
  59. return
  60. }
  61. }
  62. w, err := c.Data()
  63. if err != nil {
  64. return
  65. }
  66. _, err = w.Write(bMsg)
  67. if err != nil {
  68. return
  69. }
  70. err = w.Close()
  71. if err != nil {
  72. return
  73. }
  74.  
  75. err = c.Quit()
  76. // Or alternatively, send with remote service like Amazon SES
  77. // err = smtp.SendMail(addr, auth, fromEmail, toEmails, bMsg)
  78. // Handle response from local postfix or remote service
  79. if err != nil {
  80. return
  81. }
  82. }
Add Comment
Please, Sign In to add comment