C# 如何使用c中的mailkit在草稿中添加byte[]附件#

C# 如何使用c中的mailkit在草稿中添加byte[]附件#,c#,wpf,mailkit,C#,Wpf,Mailkit,public byte[]附件{get;set;}是我要添加的附件 草稿保存。有人知道如何在草稿附件中保存字节[] public void DraftMessage(string strto, string strcc, string strBcc, string strSubject, string strBody, List<UserAttachment> listAttachments) { try { MimeMessage emai

public byte[]附件{get;set;}
是我要添加的附件 草稿保存。有人知道如何在草稿附件中保存
字节[]

public void DraftMessage(string strto, string strcc, string strBcc,
     string strSubject, string strBody, List<UserAttachment> listAttachments)
{
    try
    {
        MimeMessage email = new MimeMessage();
        email.MessageId = MimeUtils.GenerateMessageId();
        var list = new InternetAddressList();

        if (strto != "")
        {
            string[] strArrayto = strto.Split(';');

            if (strArrayto != null)
            {
                list = new InternetAddressList();

                foreach (string _strTo in strArrayto)
                    list.Add(new MailboxAddress(_strTo));

                email.To.AddRange(list);
            }
        }

        if (strcc != "")
        {
            string[] strArraycc = strcc.Split(';');

            if (strArraycc != null)
            {
                list = new InternetAddressList();

                foreach (string _strcc in strArraycc)
                    list.Add(new MailboxAddress(_strcc));

                email.Cc.AddRange(list);
            }
        }

        if (strBcc != "")
        {
            string[] strArrayBcc = strBcc.Split(';');

            if (strArrayBcc != null)
            {
                list = new InternetAddressList();

                foreach (string _strBcc in strArrayBcc)
                    list.Add(new MailboxAddress(_strBcc));

                email.Bcc.AddRange(list);
            }
        }

        email.Subject = strSubject;
        email.Body = new TextPart(TextFormat.Html)
        {
            Text = strBody
        };

        SaveMessgeSummary(email, strDraftfolder, listAttachments);

        var draftFolder = MailManager.Instance.ImapClient.GetFolder(strDraftfolder);

        if (draftFolder != null)
        {
            draftFolder.Open(FolderAccess.ReadWrite);

            draftFolder.Append(email, MessageFlags.Draft);
            draftFolder.Expunge();
        }

        DAL.MessageSummary.UpdateExecutStatus(email.MessageId);
    }
    catch (Exception ex)
    {
    }
}
说明了如何创建附件:

var attachment = new MimePart ("image", "gif") {
    Content = new MimeContent (File.OpenRead (path), ContentEncoding.Default),
    ContentDisposition = new ContentDisposition (ContentDisposition.Attachment),
    ContentTransferEncoding = ContentEncoding.Base64,
    FileName = Path.GetFileName (path)
};
MimeContent
类型接受
,您可以通过创建
内存流
字节[]
转换为

Content = new MimeContent (new MemoryStream(byteArray), ContentEncoding.Default),

说明了如何创建附件。这是一个很好的信息源,但我想在附件中传递字节[]。另外,如果要在同一封邮件中添加多个附件,该怎么办?只需将另一个附件添加到
multipart
?如何在附件中添加字节[]?将其转换为流。看到我的答案了。消息发送后,MemoryStream会关闭吗?还是我自己负责关闭流?@DotNetFan没有任何相关文档。看来你应该一直这样。但是
MemoryStream
可能不会使用非托管内存,所以您可能会这样做。
Content = new MimeContent (new MemoryStream(byteArray), ContentEncoding.Default),