diff --git a/src/internal/connector/exchange/attachment.go b/src/internal/connector/exchange/attachment.go index c9a03ac04..5cbce271c 100644 --- a/src/internal/connector/exchange/attachment.go +++ b/src/internal/connector/exchange/attachment.go @@ -44,9 +44,17 @@ func uploadAttachment( attachment models.Attachmentable, ) error { logger.Ctx(ctx).Debugf("uploading attachment with size %d", *attachment.GetSize()) + attachmentType := attachmentType(attachment) + + // Reference attachments that are inline() do not need to be recreated. The contents are part of the body. + if attachmentType == models.REFERENCE_ATTACHMENTTYPE && + attachment.GetIsInline() != nil && *attachment.GetIsInline() { + logger.Ctx(ctx).Debugf("skip uploading inline reference attachment: ", *attachment.GetName()) + return nil + } // For Item/Reference attachments *or* file attachments < 3MB, use the attachments endpoint - if attachmentType(attachment) != models.FILE_ATTACHMENTTYPE || *attachment.GetSize() < largeAttachmentSize { + if attachmentType != models.FILE_ATTACHMENTTYPE || *attachment.GetSize() < largeAttachmentSize { err := uploader.uploadSmallAttachment(ctx, attachment) return err diff --git a/src/internal/connector/exchange/exchange_service_test.go b/src/internal/connector/exchange/exchange_service_test.go index f9881f3dd..f0b69e137 100644 --- a/src/internal/connector/exchange/exchange_service_test.go +++ b/src/internal/connector/exchange/exchange_service_test.go @@ -415,6 +415,19 @@ func (suite *ExchangeServiceSuite) TestRestoreExchangeObject() { return *folder.GetId() }, }, + { + name: "Test Mail: Reference(OneDrive) Attachment", + bytes: mockconnector.GetMessageWithOneDriveAttachment("Restore Reference(OneDrive) Attachment"), + category: path.EmailCategory, + cleanupFunc: DeleteMailFolder, + destination: func(ctx context.Context) string { + folderName := "TestRestoreMailwithReferenceAttachment: " + common.FormatSimpleDateTime(now) + folder, err := CreateMailFolder(ctx, suite.es, userID, folderName) + require.NoError(t, err) + + return *folder.GetId() + }, + }, // TODO: #884 - reinstate when able to specify root folder by name { name: "Test Contact",