Просмотр исходного кода

Rely on email.Address.String() to properly format To, From, etc. (#132)

Let golang's builtin routines take care of proper encoding and
quotation of display name and adresses.
Bo Simonsen 4 лет назад
Родитель
Сommit
0defed854a
2 измененных файлов с 8 добавлено и 10 удалено
  1. 1 3
      email.go
  2. 7 7
      email_test.go

+ 1 - 3
email.go

@@ -753,9 +753,7 @@ func headerToBytes(buff io.Writer, header textproto.MIMEHeader) {
 					if err != nil {
 					if err != nil {
 						continue
 						continue
 					}
 					}
-					if addr.Name != "" {
-						participants[i] = fmt.Sprintf("%s <%s>", mime.QEncoding.Encode("UTF-8", addr.Name), addr.Address)
-					}
+					participants[i] = addr.String()
 				}
 				}
 				buff.Write([]byte(strings.Join(participants, ", ")))
 				buff.Write([]byte(strings.Join(participants, ", ")))
 			default:
 			default:

+ 7 - 7
email_test.go

@@ -40,9 +40,9 @@ func basicTests(t *testing.T, e *Email) *mail.Message {
 	}
 	}
 
 
 	expectedHeaders := map[string]string{
 	expectedHeaders := map[string]string{
-		"To":      "test@example.com",
-		"From":    "Jordan Wright <test@example.com>",
-		"Cc":      "test_cc@example.com",
+		"To":      "<test@example.com>",
+		"From":    "\"Jordan Wright\" <test@example.com>",
+		"Cc":      "<test_cc@example.com>",
 		"Subject": "Awesome Subject",
 		"Subject": "Awesome Subject",
 	}
 	}
 
 
@@ -327,17 +327,17 @@ func TestHeaderEncoding(t *testing.T) {
 		{
 		{
 			field: "From",
 			field: "From",
 			have:  "Needs Encóding <encoding@example.com>, Only ASCII <foo@example.com>",
 			have:  "Needs Encóding <encoding@example.com>, Only ASCII <foo@example.com>",
-			want:  "=?UTF-8?q?Needs_Enc=C3=B3ding?= <encoding@example.com>, Only ASCII <foo@example.com>\r\n",
+			want:  "=?utf-8?q?Needs_Enc=C3=B3ding?= <encoding@example.com>, \"Only ASCII\" <foo@example.com>\r\n",
 		},
 		},
 		{
 		{
 			field: "To",
 			field: "To",
 			have:  "Keith Moore <moore@cs.utk.edu>, Keld Jørn Simonsen <keld@dkuug.dk>",
 			have:  "Keith Moore <moore@cs.utk.edu>, Keld Jørn Simonsen <keld@dkuug.dk>",
-			want:  "Keith Moore <moore@cs.utk.edu>, =?UTF-8?q?Keld_J=C3=B8rn_Simonsen?= <keld@dkuug.dk>\r\n",
+			want:  "\"Keith Moore\" <moore@cs.utk.edu>, =?utf-8?q?Keld_J=C3=B8rn_Simonsen?= <keld@dkuug.dk>\r\n",
 		},
 		},
 		{
 		{
 			field: "Cc",
 			field: "Cc",
-			have:  "Needs Encóding <encoding@example.com>",
-			want:  "=?UTF-8?q?Needs_Enc=C3=B3ding?= <encoding@example.com>\r\n",
+			have:  "Needs Encóding <encoding@example.com>, \"Test :)\" <test@localhost>",
+			want:  "=?utf-8?q?Needs_Enc=C3=B3ding?= <encoding@example.com>, \"Test :)\" <test@localhost>\r\n",
 		},
 		},
 		{
 		{
 			field: "Subject",
 			field: "Subject",