Index: widgets/misc/e-attachment-bar.c
===================================================================
--- widgets/misc/e-attachment-bar.c	(revision 35096)
+++ widgets/misc/e-attachment-bar.c	(working copy)
@@ -1177,6 +1177,27 @@ e_attachment_bar_add_attachment (EAttach
 	add_common (bar, attachment);
 }
 
+void
+e_attachment_bar_add_attachment_silent (EAttachmentBar *bar, EAttachment *attachment)
+{
+	g_return_if_fail (E_IS_ATTACHMENT_BAR (bar));
+	g_return_if_fail (attachment != NULL);
+
+	g_ptr_array_add (bar->priv->attachments, attachment);
+	g_object_weak_ref ((GObject *) attachment, (GWeakNotify) attachment_destroy, bar);
+	g_signal_connect (attachment, "changed", G_CALLBACK (attachment_changed_cb), bar);
+
+
+	g_signal_emit (bar, signals[CHANGED], 0);
+}
+
+void
+e_attachment_bar_refresh (EAttachmentBar *bar)
+{
+	update (bar);
+
+}
+
 int
 e_attachment_bar_get_download_count (EAttachmentBar *bar)
 {
Index: widgets/misc/e-attachment-bar.h
===================================================================
--- widgets/misc/e-attachment-bar.h	(revision 35096)
+++ widgets/misc/e-attachment-bar.h	(working copy)
@@ -83,6 +83,8 @@ GSList *e_attachment_bar_get_selected (E
 void e_attachment_bar_set_width(EAttachmentBar *bar, int bar_width);
 GSList * e_attachment_bar_get_all_attachments (EAttachmentBar *bar);
 void e_attachment_bar_create_attachment_cache (EAttachment *attachment);
+void e_attachment_bar_add_attachment_silent (EAttachmentBar *bar, EAttachment *attachment);
+void e_attachment_bar_refresh (EAttachmentBar *bar);
 
 #ifdef __cplusplus
 }
Index: mail/em-format-html-display.c
===================================================================
--- mail/em-format-html-display.c	(revision 35096)
+++ mail/em-format-html-display.c	(working copy)
@@ -148,6 +148,7 @@ struct _EMFormatHTMLDisplayPrivate {
 	GtkWidget *attachment_area;
 	gboolean  show_bar;
 	GHashTable *files;
+	gboolean updated;
 };
 
 static int efhd_html_button_press_event (GtkWidget *widget, GdkEventButton *event, EMFormatHTMLDisplay *efh);
@@ -157,6 +158,7 @@ static void efhd_html_on_url (GtkHTML *h
 static void efhd_attachment_frame(EMFormat *emf, CamelStream *stream, EMFormatPURI *puri);
 static gboolean efhd_attachment_image(EMFormatHTML *efh, GtkHTMLEmbedded *eb, EMFormatHTMLPObject *pobject);
 static void efhd_message_add_bar(EMFormat *emf, CamelStream *stream, CamelMimePart *part, const EMFormatHandler *info);
+static void efhd_message_update_bar(EMFormat *emf, CamelStream *stream, CamelMimePart *part, const EMFormatHandler *info);
 static void efhd_attachment_bar_refresh (EMFormatHTMLDisplay *efhd);
 
 struct _attach_puri {
@@ -1327,6 +1329,8 @@ static EMFormatHandler type_builtin_tabl
 
 	{ "x-evolution/message/prefix", (EMFormatFunc)efhd_message_prefix },
 	{ "x-evolution/message/post-header", (EMFormatFunc)efhd_message_add_bar },
+	{ "x-evolution/message/post-header-closure", (EMFormatFunc)efhd_message_update_bar },
+
 };
 
 static void
@@ -1879,7 +1883,7 @@ efhd_attachment_button(EMFormatHTML *efh
 		new->encrypt = info->encrypt;
 
 		/* Add the attachment to the bar.*/
-		e_attachment_bar_add_attachment(E_ATTACHMENT_BAR(efhd->priv->attachment_bar), new);
+		e_attachment_bar_add_attachment_silent (E_ATTACHMENT_BAR(efhd->priv->attachment_bar), new);
 		efhd_attachment_bar_refresh(efhd);
 	}
 
@@ -2352,6 +2356,16 @@ efhd_mnemonic_show_bar (GtkWidget *widge
 }
 
 static gboolean
+efhd_update_bar(EMFormatHTML *efh, GtkHTMLEmbedded *eb, EMFormatHTMLPObject *pobject)
+{
+	EMFormatHTMLDisplay *efhd = (EMFormatHTMLDisplay *)efh;
+	struct _EMFormatHTMLDisplayPrivate *priv = efhd->priv;
+
+	e_attachment_bar_refresh (priv->attachment_bar);
+
+	return TRUE;
+}
+static gboolean
 efhd_add_bar(EMFormatHTML *efh, GtkHTMLEmbedded *eb, EMFormatHTMLPObject *pobject)
 {
 	EMFormatHTMLDisplay *efhd = (EMFormatHTMLDisplay *)efh;
@@ -2423,6 +2437,21 @@ efhd_add_bar(EMFormatHTML *efh, GtkHTMLE
 
 	return TRUE;
 }
+static void
+efhd_message_update_bar(EMFormat *emf, CamelStream *stream, CamelMimePart *part, const EMFormatHandler *info)
+{
+	EMFormatHTMLDisplay *efhd = (EMFormatHTMLDisplay *) emf;
+	const char *classid = "attachment-bar-refresh";
+
+	if (efhd->nobar || efhd->priv->updated )
+		return;
+
+	efhd->priv->files = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	efhd->priv->updated = TRUE;
+	em_format_html_add_pobject((EMFormatHTML *)emf, sizeof(EMFormatHTMLPObject), classid, part, efhd_update_bar);
+	camel_stream_printf(stream, "<td><object classid=\"%s\"></object></td>", classid);
+
+}
 
 static void
 efhd_message_add_bar(EMFormat *emf, CamelStream *stream, CamelMimePart *part, const EMFormatHandler *info)
@@ -2434,6 +2463,7 @@ efhd_message_add_bar(EMFormat *emf, Came
 		return;
 
 	efhd->priv->files = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+	efhd->priv->updated = FALSE;
 
 	em_format_html_add_pobject((EMFormatHTML *)emf, sizeof(EMFormatHTMLPObject), classid, part, efhd_add_bar);
 	camel_stream_printf(stream, "<td><object classid=\"%s\"></object></td>", classid);
Index: mail/em-format-html.c
===================================================================
--- mail/em-format-html.c	(revision 35096)
+++ mail/em-format-html.c	(working copy)
@@ -1258,6 +1258,10 @@ efh_format_exec (struct _format_msg *m)
 		handle = em_format_find_handler((EMFormat *)m->format, "x-evolution/message/rfc822");
 		if (handle)
 			handle->handler((EMFormat *)m->format, (CamelStream *)m->estream, (CamelMimePart *)m->message, handle);
+		handle = em_format_find_handler((EMFormat *)m->format, "x-evolution/message/post-header-closure");
+		if (handle)
+			handle->handler((EMFormat *)m->format, (CamelStream *)m->estream, (CamelMimePart *)m->message, handle);
+
 	}
 
 	camel_stream_flush((CamelStream *)m->estream);
