From: Thomas Roessler Date: Tue, 7 Mar 2000 11:13:38 +0000 (+0000) Subject: Correct header encodings when postponing messages. X-Git-Tag: mutt-1-1-9-rel~14 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73193d46d1603e54de4157b37b944a744be8449a;p=mutt Correct header encodings when postponing messages. --- diff --git a/TODO b/TODO index b3bd8d3d..32cbf1f7 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,5 @@ Problems are listed in approximate order of priority. -- Fix postponing: Headers should be RFC2047 en- and de-coded. - character set support: We should have a global cache of character to file name mappings. diff --git a/protos.h b/protos.h index 540f68ba..76daf732 100644 --- a/protos.h +++ b/protos.h @@ -175,7 +175,8 @@ void mutt_parse_mime_message (CONTEXT *ctx, HEADER *); void mutt_parse_part (FILE *, BODY *); void mutt_pipe_message_to_state (HEADER *, STATE *); void mutt_perror (const char *); -void mutt_prepare_envelope (ENVELOPE *); +void mutt_prepare_envelope (ENVELOPE *, int); +void mutt_unprepare_envelope (ENVELOPE *); void mutt_pretty_mailbox (char *); void mutt_pretty_size (char *, size_t, long); void mutt_print_message (HEADER *); diff --git a/send.c b/send.c index 0b899cf3..202b4c63 100644 --- a/send.c +++ b/send.c @@ -1324,9 +1324,14 @@ main_loop: */ msg->read = 0; msg->old = 0; + encode_descriptions (msg->content, 1); + mutt_prepare_envelope (msg->env, 0); + if (!Postponed || mutt_write_fcc (NONULL (Postponed), msg, (cur && (flags & SENDREPLY)) ? cur->env->message_id : NULL, 1, fcc) < 0) { msg->content = mutt_remove_multipart (msg->content); + decode_descriptions (msg->content); + mutt_unprepare_envelope (msg->env); goto main_loop; } mutt_update_num_postponed (); @@ -1403,7 +1408,7 @@ main_loop: if (!option (OPTNOCURSES) && !(flags & SENDMAILX)) mutt_message _("Sending message..."); - mutt_prepare_envelope (msg->env); + mutt_prepare_envelope (msg->env, 1); /* save a copy of the message, if necessary. */ @@ -1522,6 +1527,8 @@ full_fcc: } #endif msg->content = mutt_remove_multipart (msg->content); + decode_descriptions (msg->content); + mutt_unprepare_envelope (msg->env); goto main_loop; } else diff --git a/sendlib.c b/sendlib.c index 5f0493a2..4516792f 100644 --- a/sendlib.c +++ b/sendlib.c @@ -102,7 +102,7 @@ sysexits_h[] = { S_ERR, "Exec error." }, { -1, NULL} }; - + #ifdef HAVE_PGP #include "pgp.h" @@ -1786,28 +1786,35 @@ char *mutt_quote_string (const char *s) return (r); } -void mutt_prepare_envelope (ENVELOPE *env) +/* For postponing (!final) do the necessary encodings only */ +void mutt_prepare_envelope (ENVELOPE *env, int final) { char buffer[LONG_STRING]; - if (env->bcc && !(env->to || env->cc)) + if (final) { - /* some MTA's will put an Apparently-To: header field showing the Bcc: - * recipients if there is no To: or Cc: field, so attempt to suppress - * it by using an empty To: field. - */ - env->to = rfc822_new_address (); - env->to->group = 1; - env->to->next = rfc822_new_address (); + if (env->bcc && !(env->to || env->cc)) + { + /* some MTA's will put an Apparently-To: header field showing the Bcc: + * recipients if there is no To: or Cc: field, so attempt to suppress + * it by using an empty To: field. + */ + env->to = rfc822_new_address (); + env->to->group = 1; + env->to->next = rfc822_new_address (); - buffer[0] = 0; - rfc822_cat (buffer, sizeof (buffer), "undisclosed-recipients", - RFC822Specials); + buffer[0] = 0; + rfc822_cat (buffer, sizeof (buffer), "undisclosed-recipients", + RFC822Specials); - env->to->mailbox = safe_strdup (buffer); - } + env->to->mailbox = safe_strdup (buffer); + } + + mutt_set_followup_to (env); - mutt_set_followup_to (env); + if (!env->message_id) + env->message_id = mutt_gen_msgid (); + } /* Take care of 8-bit => 7-bit conversion. */ rfc2047_encode_adrlist (env->to); @@ -1823,9 +1830,18 @@ void mutt_prepare_envelope (ENVELOPE *env) mutt_str_replace (&env->subject, buffer); } encode_headers (env->userhdrs); +} - if (!env->message_id) - env->message_id = mutt_gen_msgid (); +void mutt_unprepare_envelope (ENVELOPE *env) +{ + rfc822_free_address (&env->mail_followup_to); + + /* back conversions */ + rfc2047_decode_adrlist (env->to); + rfc2047_decode_adrlist (env->cc); + rfc2047_decode_adrlist (env->from); + rfc2047_decode_adrlist (env->reply_to); + rfc2047_decode (env->subject, env->subject, mutt_strlen (env->subject) + 1); } static void _mutt_bounce_message (FILE *fp, HEADER *h, ADDRESS *to, const char *resent_from)