diff options
Diffstat (limited to 'mail/em-format-html.c')
-rw-r--r-- | mail/em-format-html.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/mail/em-format-html.c b/mail/em-format-html.c index edd7c25730..a0346b00b0 100644 --- a/mail/em-format-html.c +++ b/mail/em-format-html.c @@ -1467,10 +1467,19 @@ efh_format_address (GString *out, struct _camel_header_address *a) switch (a->type) { case CAMEL_HEADER_ADDRESS_NAME: - if (name && *name) + if (name && *name) { + char *real, *mailaddr; + g_string_append_printf (out, "%s <", name); - - mailto = camel_url_encode (a->v.addr, ""); + /* rfc2368 for mailto syntax and url encoding extras */ + real = camel_header_encode_phrase(a->name); + mailaddr = g_strdup_printf("%s <%s>", real, a->v.addr); + g_free(real); + mailto = camel_url_encode(mailaddr, "?=&()"); + g_free(mailaddr); + } else { + mailto = camel_url_encode (a->v.addr, "?=&()"); + } addr = camel_text_to_html (a->v.addr, flags, 0); g_string_append_printf (out, "<a href=\"mailto:%s\">%s</a>", mailto, addr); g_free (mailto); |