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 *);
*/
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 ();
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. */
}
#endif
msg->content = mutt_remove_multipart (msg->content);
+ decode_descriptions (msg->content);
+ mutt_unprepare_envelope (msg->env);
goto main_loop;
}
else
{ S_ERR, "Exec error." },
{ -1, NULL}
};
-
+
#ifdef HAVE_PGP
#include "pgp.h"
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);
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)