mirror of
https://github.com/jhillyerd/inbucket.git
synced 2025-12-17 09:37:02 +00:00
webui, rest: Render UTF-8 addresses correctly, fixes #117
This commit is contained in:
@@ -19,13 +19,28 @@ func HashMailboxName(mailbox string) string {
|
||||
return fmt.Sprintf("%x", h.Sum(nil))
|
||||
}
|
||||
|
||||
// StringAddressList converts a list of addresses to a list of strings
|
||||
// StringAddress converts an Address to a UTF-8 string.
|
||||
func StringAddress(a *mail.Address) string {
|
||||
b := &strings.Builder{}
|
||||
if a != nil {
|
||||
if a.Name != "" {
|
||||
b.WriteString(a.Name)
|
||||
b.WriteRune(' ')
|
||||
}
|
||||
if a.Address != "" {
|
||||
b.WriteRune('<')
|
||||
b.WriteString(a.Address)
|
||||
b.WriteRune('>')
|
||||
}
|
||||
}
|
||||
return b.String()
|
||||
}
|
||||
|
||||
// StringAddressList converts a list of addresses to a list of UTF-8 strings.
|
||||
func StringAddressList(addrs []*mail.Address) []string {
|
||||
s := make([]string, len(addrs))
|
||||
for i, a := range addrs {
|
||||
if a != nil {
|
||||
s[i] = a.String()
|
||||
}
|
||||
s[i] = StringAddress(a)
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
@@ -17,10 +17,14 @@ func TestHashMailboxName(t *testing.T) {
|
||||
|
||||
func TestStringAddressList(t *testing.T) {
|
||||
input := []*mail.Address{
|
||||
{Name: "Fred B. Fish", Address: "fred@fish.org"},
|
||||
{Name: "Fred ß. Fish", Address: "fred@fish.org"},
|
||||
{Name: "User", Address: "user@domain.org"},
|
||||
{Address: "a@b.com"},
|
||||
}
|
||||
want := []string{`"Fred B. Fish" <fred@fish.org>`, `"User" <user@domain.org>`}
|
||||
want := []string{
|
||||
`Fred ß. Fish <fred@fish.org>`,
|
||||
`User <user@domain.org>`,
|
||||
`<a@b.com>`}
|
||||
output := stringutil.StringAddressList(input)
|
||||
if len(output) != len(want) {
|
||||
t.Fatalf("Got %v strings, want: %v", len(output), len(want))
|
||||
|
||||
Reference in New Issue
Block a user