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),