email_test.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package parsemail
  2. import (
  3. "bytes"
  4. "fmt"
  5. "github.com/emersion/go-message"
  6. "io"
  7. "testing"
  8. )
  9. func Test_buildUser(t *testing.T) {
  10. u := buildUser("Jinnrry N <jiangwei1995910@gmail.com>")
  11. if u.EmailAddress != "jiangwei1995910@gmail.com" {
  12. t.Error("error")
  13. }
  14. if u.Name != "Jinnrry N" {
  15. t.Error("error")
  16. }
  17. u = buildUser("=?UTF-8?B?YWRtaW5AamlubnJyeS5jb20=?=<admin@jinnrry.com>")
  18. if u.EmailAddress != "admin@jinnrry.com" {
  19. t.Error("error")
  20. }
  21. if u.Name != "admin@jinnrry.com" {
  22. t.Error("error")
  23. }
  24. u = buildUser("\"admin@jinnrry.com\" <admin@jinnrry.com>")
  25. if u.EmailAddress != "admin@jinnrry.com" {
  26. t.Error("error")
  27. }
  28. if u.Name != "admin@jinnrry.com" {
  29. t.Error("error")
  30. }
  31. }
  32. func TestEmailBuidlers(t *testing.T) {
  33. var b bytes.Buffer
  34. var h message.Header
  35. h.SetContentType("multipart/alternative", nil)
  36. w, err := message.CreateWriter(&b, h)
  37. if err != nil {
  38. }
  39. var h1 message.Header
  40. h1.SetContentType("text/html", nil)
  41. w1, err := w.CreatePart(h1)
  42. if err != nil {
  43. }
  44. io.WriteString(w1, "<h1>Hello World!</h1><p>This is an HTML part.</p>")
  45. w1.Close()
  46. var h2 message.Header
  47. h2.SetContentType("text/plain", nil)
  48. w2, err := w.CreatePart(h2)
  49. if err != nil {
  50. }
  51. io.WriteString(w2, "Hello World!\n\nThis is a text part.")
  52. w2.Close()
  53. w.Close()
  54. fmt.Println(b.String())
  55. }
  56. func TestEmail_builder(t *testing.T) {
  57. e := Email{
  58. From: buildUser("i@test.com"),
  59. To: buildUsers([]string{"to@test.com"}),
  60. Subject: "Title中文",
  61. HTML: []byte("Html"),
  62. Text: []byte("Text"),
  63. Attachments: []*Attachment{
  64. {
  65. Filename: "a.png",
  66. ContentType: "image/jpeg",
  67. Content: []byte("aaa"),
  68. ContentID: "1",
  69. },
  70. },
  71. }
  72. rest := e.BuildBytes(nil, false)
  73. fmt.Println(string(rest))
  74. }