diff --git a/src/modules/Elsa.Email/Activities/SendEmail.cs b/src/modules/Elsa.Email/Activities/SendEmail.cs index 4ec9ca02d..db68773ca 100644 --- a/src/modules/Elsa.Email/Activities/SendEmail.cs +++ b/src/modules/Elsa.Email/Activities/SendEmail.cs @@ -1,4 +1,5 @@ using System.Collections; +using System.Dynamic; using System.Runtime.CompilerServices; using System.Text; using System.Text.Json; @@ -183,6 +184,22 @@ public class SendEmail : Activity else if (emailAttachment.Content is Stream stream) await bodyBuilder.Attachments.AddAsync(fileName, stream, parsedContentType, cancellationToken); + break; + } + case ExpandoObject expandoObject: + { + var dictionary = new Dictionary(expandoObject, StringComparer.OrdinalIgnoreCase); + var fileName = dictionary.GetValue("FileName") ?? $"Attachment-{++index}"; + var contentType = dictionary.GetValue("ContentType") ?? "application/binary"; + var parsedContentType = ContentType.Parse(contentType); + var content = dictionary.GetValue("Content"); + + if (content is byte[] bytes) + bodyBuilder.Attachments.Add(fileName, bytes, parsedContentType); + + else if (content is Stream stream) + await bodyBuilder.Attachments.AddAsync(fileName, stream, parsedContentType, cancellationToken); + break; } default: