From 2be76604a8977d3e91d503436f5a528b5bdbe9b4 Mon Sep 17 00:00:00 2001 From: MisterZedd <93245713+MisterZedd@users.noreply.github.com> Date: Wed, 26 Nov 2025 08:49:22 -0500 Subject: [PATCH 1/2] Update Send_MailKitMessage.cs added support for inline attachments and message priority. Inline attachments can be added by creating a hashtable with structure: @{contentId = filePath} and adding this to the message body: Then pass the hashtable into the -InlineAttachments parameter. --- Project/Send_MailKitMessage.cs | 64 ++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/Project/Send_MailKitMessage.cs b/Project/Send_MailKitMessage.cs index 2cc2fa9..b752b66 100644 --- a/Project/Send_MailKitMessage.cs +++ b/Project/Send_MailKitMessage.cs @@ -1,5 +1,6 @@ using MimeKit; using System; +using System.Collections; using System.IO; using System.Management.Automation; using System.Reflection; @@ -89,6 +90,20 @@ public class Send_MailKitMessage : PSCmdlet Mandatory = false)] public string[] AttachmentList { get; set; } + [Parameter( + Mandatory = false)] + [ValidateSet(new string[] + { + "Normal", + "High", + "Low" + })] + public string Priority { get; set; } = "Normal"; + + [Parameter( + Mandatory = false)] + public Hashtable InlineImages { get; set; } + // This method gets called once for each cmdlet in the pipeline when the pipeline starts executing protected override void BeginProcessing() { @@ -151,9 +166,58 @@ protected override void ProcessRecord() } } + //inline attachment(s) + if(InlineImages != null && InlineImages.Count > 0) + { + foreach(object obj in InlineImages) + { + DictionaryEntry dictionaryEntry = (dictionaryEntry)obj; + string contentId = dictionaryEntry.Key.ToString(); + string text = dictionaryEntry.Value.ToString(); + if(File.Exists(text)) + { + string[] array = MimeTypes.GetMimeType(text).Split(new char[] + { + '/' + }); + MimePart attachment = new MimePart(new ContentType(array[0], array[1])) + { + Content = new MimeContent(File.OpenRead(text), ContentEncoding.Default), + ContentDisposition = new ContentDisposition("inline"), + ContentTransferEncoding = ContentEncoding.Base64, + ContentId = contentId, + FileName = Path.GetFileName(text) + }; + bodyBuilder.LinkedResources.Add(attachment); + } + else + { + base.WriteWarning("Inline image file not found: " + text); + } + } + } + //add bodybuilder to body Message.Body = Body.ToMessageBody(); + //set message priority + string prio = Priority.ToLower(); + if(!(prio == "high")) + { + if(prio == "low") + { + mimeMessage.Headers.Add("X-Priority", "5 (Lowest)"); + mimeMessage.Headers.Add("X-MSMail-Priority", "Low"); + mimeMessage.Headers.Add("Importance", "Low"); + } + } + else + { + mimeMessage.Headers.Add("X-Priority", "1 (Highest)"); + mimeMessage.Headers.Add("X-MSMail-Priority", "High"); + mimeMessage.Headers.Add("Importance", "High"); + } + //smtp send Client.Connect(SMTPServer, Port, (UseSecureConnectionIfAvailable.IsPresent ? MailKit.Security.SecureSocketOptions.Auto : MailKit.Security.SecureSocketOptions.None)); if (Credential != null) From 12a55fed81180041a5b9ea3acaf6ca82afbaf3db Mon Sep 17 00:00:00 2001 From: MisterZedd <93245713+MisterZedd@users.noreply.github.com> Date: Wed, 26 Nov 2025 08:56:39 -0500 Subject: [PATCH 2/2] Update Send_MailKitMessage.cs Fixed some incorrect variable names from previous commit. Note: I incorrectly said -InlineAttachments in my previous commit. The parameter is -InlineImages. --- Project/Send_MailKitMessage.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Project/Send_MailKitMessage.cs b/Project/Send_MailKitMessage.cs index b752b66..893836f 100644 --- a/Project/Send_MailKitMessage.cs +++ b/Project/Send_MailKitMessage.cs @@ -188,7 +188,7 @@ protected override void ProcessRecord() ContentId = contentId, FileName = Path.GetFileName(text) }; - bodyBuilder.LinkedResources.Add(attachment); + Body.LinkedResources.Add(attachment); } else { @@ -206,16 +206,16 @@ protected override void ProcessRecord() { if(prio == "low") { - mimeMessage.Headers.Add("X-Priority", "5 (Lowest)"); - mimeMessage.Headers.Add("X-MSMail-Priority", "Low"); - mimeMessage.Headers.Add("Importance", "Low"); + Message.Headers.Add("X-Priority", "5 (Lowest)"); + Message.Headers.Add("X-MSMail-Priority", "Low"); + Message.Headers.Add("Importance", "Low"); } } else { - mimeMessage.Headers.Add("X-Priority", "1 (Highest)"); - mimeMessage.Headers.Add("X-MSMail-Priority", "High"); - mimeMessage.Headers.Add("Importance", "High"); + Message.Headers.Add("X-Priority", "1 (Highest)"); + Message.Headers.Add("X-MSMail-Priority", "High"); + Message.Headers.Add("Importance", "High"); } //smtp send