diff --git a/camel/camel-exchange-transport.c b/camel/camel-exchange-transport.c
index 4dfe1de..fe46978 100644
--- a/camel/camel-exchange-transport.c
+++ b/camel/camel-exchange-transport.c
@@ -26,6 +26,7 @@
 #include <string.h>
 #include <glib/gi18n-lib.h>
 
+#include "camel-exchange-settings.h"
 #include "camel-exchange-transport.h"
 #include "camel-exchange-utils.h"
 
@@ -122,14 +123,21 @@ exchange_transport_send_to_sync (CamelTransport *transport,
 	if (store)
 		g_object_unref (CAMEL_OBJECT (store));
 
+	if (!success && error && !*error)
+		g_set_error_literal (error, CAMEL_ERROR, CAMEL_ERROR_GENERIC, _("Could not send message"));
+
 	return success;
 }
 
 static void
 camel_exchange_transport_class_init (CamelExchangeTransportClass *class)
 {
+	CamelServiceClass *service_class;
 	CamelTransportClass *transport_class;
 
+	service_class = CAMEL_SERVICE_CLASS (class);
+	service_class->settings_type = CAMEL_TYPE_EXCHANGE_SETTINGS;
+
 	transport_class = CAMEL_TRANSPORT_CLASS (class);
 	transport_class->send_to_sync = exchange_transport_send_to_sync;
 }
diff --git a/camel/camel-exchange-utils.c b/camel/camel-exchange-utils.c
index 4dac486..9089a0c 100644
--- a/camel/camel-exchange-utils.c
+++ b/camel/camel-exchange-utils.c
@@ -248,6 +248,14 @@ get_data_for_service (CamelService *service)
 
 	g_slist_free (accounts);
 
+	if (!res) {
+		g_warn_if_reached ();
+
+		/* there is configured only one account, thus use that ExchangeData */
+		if (edies && !edies->next)
+			res = edies->data;
+	}
+
 	G_UNLOCK (edies);
 
 	return res;
