client.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package mocks
  2. import (
  3. "fmt"
  4. "net/smtp"
  5. "time"
  6. )
  7. const (
  8. URL = "127.0.0.1:2500"
  9. )
  10. func lastWords(message string, err error) {
  11. fmt.Println(message, err.Error())
  12. return
  13. // panic(err)
  14. }
  15. // Sends a single SMTP message, for testing.
  16. func main() {
  17. for i := 0; i < 100; i++ {
  18. go sendMail(i)
  19. }
  20. time.Sleep(time.Minute / 10)
  21. }
  22. func sendMail(i int) {
  23. fmt.Printf("Sending %d mail\n", i)
  24. c, err := smtp.Dial(URL)
  25. if err != nil {
  26. lastWords("Dial ", err)
  27. }
  28. defer c.Close()
  29. from := "[email protected]"
  30. to := "[email protected]"
  31. if err = c.Mail(from); err != nil {
  32. lastWords("Mail ", err)
  33. }
  34. if err = c.Rcpt(to); err != nil {
  35. lastWords("Rcpt ", err)
  36. }
  37. wr, err := c.Data()
  38. if err != nil {
  39. lastWords("Data ", err)
  40. }
  41. defer wr.Close()
  42. msg := fmt.Sprint("Subject: something\n")
  43. msg += "From: " + from + "\n"
  44. msg += "To: " + to + "\n"
  45. msg += "\n\n"
  46. msg += "hello\n"
  47. _, err = fmt.Fprint(wr, msg)
  48. if err != nil {
  49. lastWords("Send ", err)
  50. }
  51. fmt.Printf("About to quit %d\n", i)
  52. err = c.Quit()
  53. if err != nil {
  54. lastWords("Quit ", err)
  55. }
  56. fmt.Printf("Finished sending %d mail\n", i)
  57. }