diff --git a/apimail/api/views.py b/apimail/api/views.py
index a15cd53019c9dfbefbd642aa20a7c31d622f7b50..04855345d2da591b737e1497e9d0200dec5f364c 100644
--- a/apimail/api/views.py
+++ b/apimail/api/views.py
@@ -8,6 +8,7 @@ from django.db.models import Q
 from django.shortcuts import get_object_or_404
 from django.utils import timezone
 
+from rest_framework.exceptions import NotFound
 from rest_framework.generics import (
     CreateAPIView, DestroyAPIView, ListAPIView,
     RetrieveAPIView, UpdateAPIView)
@@ -88,6 +89,18 @@ class ComposedMessageUpdateAPIView(UpdateAPIView):
     serializer_class = ComposedMessageSerializer
     lookup_field = 'uuid'
 
+    def partial_update(self, request, *args, **kwargs):
+        instance = self.get_object()
+        data = request.data
+        for att_uuid in data['attachment_uuids']:
+            try:
+                att = AttachmentFile.objects.get(uuid=att_uuid)
+                instance.attachment_files.remove(att)
+                instance.attachment_files.add(att)
+            except AttachmentFile.DoesNotExist:
+                raise NotFound(detail=('An attachment file with uuid %s was not found.' % att_uuid))
+        return super().partial_update(request, *args, **kwargs)
+
 
 class ComposedMessageDestroyAPIView(DestroyAPIView):
     permission_classes = (IsAuthenticated, CanHandleComposedMessage,)
diff --git a/apimail/static/apimail/assets/vue/components/MessageComposer.vue b/apimail/static/apimail/assets/vue/components/MessageComposer.vue
index c8d7853596c9942740f4b12e25c2b788a5585ec8..6f69f6a2fcb72452cb78aead629768452544d2ea 100644
--- a/apimail/static/apimail/assets/vue/components/MessageComposer.vue
+++ b/apimail/static/apimail/assets/vue/components/MessageComposer.vue
@@ -65,7 +65,8 @@
       class="mb-4"
       >
       <attachment-list-editable
-	:attachments="form.attachments"></attachment-list-editable>
+	:attachments="form.attachments">
+      </attachment-list-editable>
     </b-form-group>
     <b-form-group
       id="subject"
@@ -122,8 +123,6 @@
       <p class="m-2 p-2 bg-success text-white">
 	The message draft was successfully saved.
       </p>
-      <p>JSON: {{ response_body_json }}</p>
-      <p>Draft: {{ draftmessage }}</p>
     </template>
     <template v-else-if="markReadySuccessful">
       <p class="m-2 p-2 bg-success text-white">
@@ -132,7 +131,8 @@
     </template>
     <template v-else-if="saveDraftSuccessful === false || markReadySuccessful === false">
       <p class="m-2 p-2 bg-danger text-white">
-	The server responded with an error, please check and try again
+	The server responded with an error, please check and try again.<br>
+	{{ response_body_json }}
       </p>
     </template>
 
@@ -213,6 +213,10 @@ export default {
 	    else {
 		url += '/create'
 	    }
+	    var attachment_uuids = []
+	    this.form.attachments.forEach( function(att) {
+		attachment_uuids.push(att.uuid)
+	    })
 	    fetch(url,
 	    	  {
 	    	      method: method,
@@ -229,7 +233,7 @@ export default {
 			  'subject': this.form.subject,
 			  'body_text': this.form.body,
 			  'body_html': this.form.sanitized_body_html,
-			  'attachments': this.form.attachments
+			  'attachment_uuids': attachment_uuids
 	    	      })
 	    	  })
 		.then(response => {
@@ -271,6 +275,7 @@ export default {
 	    this.form.subject = this.draftmessage.subject
 	    this.form.body = this.draftmessage.body_text
 	    this.form.sanitized_body_html = this.$sanitize(this.draftmessage.body_html)
+	    this.form.attachments = this.draftmessage.attachment_files
 	}
       	else if (this.originalmessage) {
 	    this.form.from_account = this.originalmessage.data.To
@@ -291,6 +296,7 @@ export default {
 				   '\nDate: ' + this.originalmessage.datetimestamp +
 				   '\nTo: ' + this.originalmessage.data.To +
 				   '\n\n')
+		this.form.attachments = this.originalmessage.attachment_files
 	    }
 	    this.form.body += (this.originalmessage.data["body-plain"] +
 			       '\n</blockquote>')