diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 9a28a68..4f0de7d 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -399,7 +399,8 @@ set_recipients_from_destv (CamelMimeMessage *msg,
 	CamelInternetAddress *bcc_addr;
 	CamelInternetAddress *target;
 	const gchar *text_addr, *header;
-	gboolean seen_hidden_list = FALSE;
+	gchar *to_str = NULL;
+	gboolean seen_hidden_list = FALSE, any_to = FALSE, any_cc = FALSE, any_bcc = FALSE;
 	gint i;
 
 	to_addr  = camel_internet_address_new ();
@@ -417,7 +418,14 @@ set_recipients_from_destv (CamelMimeMessage *msg,
 				seen_hidden_list = TRUE;
 			}
 
-			camel_address_decode (CAMEL_ADDRESS (target), text_addr);
+			if (camel_address_decode (CAMEL_ADDRESS (target), text_addr) > 0) {
+				any_to = TRUE;
+			} else if (!to_str) {
+				to_str = g_strdup (text_addr);
+			} else if (*to_str) {
+				g_free (to_str);
+				to_str = g_strdup ("");
+			}
 		}
 	}
 
@@ -431,24 +439,28 @@ set_recipients_from_destv (CamelMimeMessage *msg,
 				seen_hidden_list = TRUE;
 			}
 
-			camel_address_decode (CAMEL_ADDRESS (target), text_addr);
+			if (camel_address_decode (CAMEL_ADDRESS (target), text_addr) > 0)
+				any_cc = TRUE;
 		}
 	}
 
 	for (i = 0; bcc_destv != NULL && bcc_destv[i] != NULL; ++i) {
 		text_addr = e_destination_get_address (bcc_destv[i]);
 		if (text_addr && *text_addr) {
-			camel_address_decode (CAMEL_ADDRESS (bcc_addr), text_addr);
+			if (camel_address_decode (CAMEL_ADDRESS (bcc_addr), text_addr))
+				any_bcc = TRUE;
 		}
 	}
 
 	header = redirect ? CAMEL_RECIPIENT_TYPE_RESENT_TO : CAMEL_RECIPIENT_TYPE_TO;
 	if (camel_address_length (CAMEL_ADDRESS (to_addr)) > 0) {
 		camel_mime_message_set_recipients (msg, header, to_addr);
-	} else if (seen_hidden_list) {
-		camel_medium_set_header (CAMEL_MEDIUM (msg), header, "Undisclosed-Recipient:;");
+	} else if (seen_hidden_list || (!any_to && !any_cc && any_bcc)) {
+		camel_medium_set_header (CAMEL_MEDIUM (msg), header, (to_str && *to_str) ? to_str : "Undisclosed-Recipient:;");
 	}
 
+	g_free (to_str);
+
 	header = redirect ? CAMEL_RECIPIENT_TYPE_RESENT_CC : CAMEL_RECIPIENT_TYPE_CC;
 	if (camel_address_length (CAMEL_ADDRESS (cc_addr)) > 0) {
 		camel_mime_message_set_recipients (msg, header, cc_addr);
