How to move an attachment from one e-mail to another using MailKit/MimeKit?(如何使用MailKit/MimeKit将附件从一封电子邮件移动到另一封电子邮件?)
                            本文介绍了如何使用MailKit/MimeKit将附件从一封电子邮件移动到另一封电子邮件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
                        
                        问题描述
如果我们通过使用ImapClient将UniqueId移动到我们希望将附件移动到的邮件,我们具体如何实现这一点?
谢谢!
推荐答案
UniqueId? AddAttachmentToMessage (ImapClient client, ImapFolder folder, UniqueId uid, MimeEntity attachment)
{
    var message = folder.GetMessage (uid);
    var body = message.Body;
    Multipart multipart;
    if (message.Body is Multipart && message.Body.ContentType.IsMimeType ("multipart", "mixed")) {
        multipart = (Multipart) message.Body;
    } else {
        multipart = new Multipart ("mixed");
        multipart.Add (message.Body);
        message.Body = multipart;
    }
    multipart.Add (attachment);
    var newUid = folder.Append (message);
    folder.AddFlags (uid, MessageFlags.Deleted, true);
    if (client.Capabilities.HasFlag (ImapCapabilities.UidPlus))
        folder.Expunge (new UniqueId[] { uid });
    return newUid;
}
如果服务器不支持UIDPLUS,而您需要newUid值,那么您可能会这样做:
if (!client.Capabilities.HasFlag (ImapCapabilities.UidPlus)) {
    var initialUids = folder.Search (SearchQuery.All);
    folder.Append (message);
    var updatedUids = folder.Search (SearchQuery.All);
    // find the new uids
    var newUids = new UniqueIdSet (SortOrder.Ascending);
    for (int i = updatedUids.Count - 1; i >= 0; i--) {
        if (!initialUids.Contains (updatedUids[i]))
            newUids.Add (updatedUids[i]);
    }
    // get envelope info for each of the new messages
    var newItems = folder.Fetch (newUids, MessageSummaryItems.UniqueId | MessageSummaryItems.Envelope);
    foreach (var item in newItems) {
        var msgid = MimeUtils.ParseMessageId (item.Envelope.MessageId);
        if (message.MessageId.Equals (msgid))
            return item.UniuqeId;
        // Note: if you want to be more pedantic, you can compare the From/To/Cc/ReplyTo and Subject fields as well.
    }
}
这篇关于如何使用MailKit/MimeKit将附件从一封电子邮件移动到另一封电子邮件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
				 沃梦达教程
				
			本文标题为:如何使用MailKit/MimeKit将附件从一封电子邮件移动
 
				
         
 
            
        
             猜你喜欢
        
	     - 在 C# 中异步处理项目队列 2022-01-01
- 带问号的 nvarchar 列结果 2022-01-01
- 为什么 C# 中的堆栈大小正好是 1 MB? 2022-01-01
- Azure Active Directory 与 MVC,客户端和资源标识同一 2022-01-01
- 使用 rss + c# 2022-01-01
- 在 LINQ to SQL 中使用 contains() 2022-01-01
- CanBeNull和ReSharper-将其用于异步任务? 2022-01-01
- 是否可以在 .Net 3.5 中进行通用控件? 2022-01-01
- C# 通过连接字符串检索正确的 DbConnection 对象 2022-01-01
- Windows 喜欢在 LINUX 中使用 MONO 进行服务开发? 2022-01-01
 
						 
						 
						 
						 
						