diff --git a/Rnwood.Smtp4dev/ClientApp/src/ApiClient/MessagesController.ts b/Rnwood.Smtp4dev/ClientApp/src/ApiClient/MessagesController.ts index 502a30a06..841cdce01 100644 --- a/Rnwood.Smtp4dev/ClientApp/src/ApiClient/MessagesController.ts +++ b/Rnwood.Smtp4dev/ClientApp/src/ApiClient/MessagesController.ts @@ -214,12 +214,12 @@ export default class MessagesController { } // put: api/Messages - public import_url(mailboxName: string): string { - return `${this.apiBaseUrl}?mailboxName=${encodeURIComponent(mailboxName)}`; + public import_url(mailboxName: string, folderName: string = "INBOX"): string { + return `${this.apiBaseUrl}?mailboxName=${encodeURIComponent(mailboxName)}&folderName=${encodeURIComponent(folderName)}`; } - public async import(emlContent: string, mailboxName: string): Promise { - return (await axios.put(this.import_url(mailboxName), emlContent, { + public async import(emlContent: string, mailboxName: string, folderName: string = "INBOX"): Promise { + return (await axios.put(this.import_url(mailboxName, folderName), emlContent, { headers: { 'Content-Type': 'message/rfc822' } diff --git a/Rnwood.Smtp4dev/ClientApp/src/components/messagelist.vue b/Rnwood.Smtp4dev/ClientApp/src/components/messagelist.vue index 733a8be73..727e83183 100644 --- a/Rnwood.Smtp4dev/ClientApp/src/components/messagelist.vue +++ b/Rnwood.Smtp4dev/ClientApp/src/components/messagelist.vue @@ -396,7 +396,7 @@ const emlContent = await this.readFileAsText(file); // Call the import API for this single file - const messageId = await new MessagesController().import(emlContent, this.selectedMailbox); + const messageId = await new MessagesController().import(emlContent, this.selectedMailbox, this.selectedFolder); successCount++; importedIds.push(messageId); diff --git a/Rnwood.Smtp4dev/Controllers/MessagesController.cs b/Rnwood.Smtp4dev/Controllers/MessagesController.cs index 73ac721ce..c6dc7a2da 100644 --- a/Rnwood.Smtp4dev/Controllers/MessagesController.cs +++ b/Rnwood.Smtp4dev/Controllers/MessagesController.cs @@ -529,12 +529,13 @@ public async Task Delete(Guid id) /// Imports a single EML file as a new message. /// /// Mailbox name to import the message into + /// Folder name to import the message into (e.g. INBOX, Sent). Defaults to INBOX. /// The ID of the imported message [HttpPut] [Consumes("message/rfc822")] [SwaggerResponse(System.Net.HttpStatusCode.OK, typeof(Guid), Description = "ID of the imported message")] [SwaggerResponse(System.Net.HttpStatusCode.BadRequest, typeof(void), Description = "If the EML content is invalid")] - public async Task> ImportMessage(string mailboxName = MailboxOptions.DEFAULTNAME) + public async Task> ImportMessage(string mailboxName = MailboxOptions.DEFAULTNAME, string folderName = MailboxFolder.INBOX) { try { @@ -601,7 +602,7 @@ public async Task> ImportMessage(string mailboxName = Mailbox } dbMessage.Mailbox = mailbox; - dbMessage.MailboxFolder = await dbContext.MailboxFolders.FirstOrDefaultAsync(f => f.Mailbox.Name == mailboxName && f.Name == MailboxFolder.INBOX); + dbMessage.MailboxFolder = await dbContext.MailboxFolders.FirstOrDefaultAsync(f => f.Mailbox.Name == mailboxName && f.Name == folderName); dbMessage.IsUnread = true; // Add to database