diff options
72 files changed, 2652 insertions, 397 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj index d7df7fc0..0f011a20 100755 --- a/build-mac/mailcore2.xcodeproj/project.pbxproj +++ b/build-mac/mailcore2.xcodeproj/project.pbxproj @@ -7,6 +7,515 @@ objects = { /* Begin PBXBuildFile section */ + 27780C2E19CF9CD100C77E44 /* MCOFramework.mm in Sources */ = {isa = PBXBuildFile; fileRef = C6BD28A9170BDB6B00A91AC1 /* MCOFramework.mm */; }; + 27780C3219CF9CD100C77E44 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6ED6D1917A1919500A4A14C /* Security.framework */; }; + 27780C3619CF9CD100C77E44 /* providers.json in Resources */ = {isa = PBXBuildFile; fileRef = 84AF9E7D172DBAF600E60AA3 /* providers.json */; }; + 27780C3D19CF9D9800C77E44 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27780C3C19CF9D9800C77E44 /* CFNetwork.framework */; }; + 27780C3E19CF9DDF00C77E44 /* libMailCore-ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C6BA2C191705F4E6003F0E9E /* libMailCore-ios.a */; }; + 27780D3619CFA32900C77E44 /* MCOFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = C6BD28A8170BDB6B00A91AC1 /* MCOFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3719CFA32900C77E44 /* MCOPOP.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BFB170781BC00882C15 /* MCOPOP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3819CFA32900C77E44 /* MCOPOPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BD41706903500882C15 /* MCOPOPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3919CFA32900C77E44 /* MCOPOPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BE01706905600882C15 /* MCOPOPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3A19CFA32900C77E44 /* MCOPOPOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C60136951776C31000A5AF45 /* MCOPOPOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D3B19CFA32900C77E44 /* MCOPOPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BD81706903E00882C15 /* MCOPOPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3C19CFA32900C77E44 /* MCOPOPFetchMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BDC1706904800882C15 /* MCOPOPFetchMessageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3D19CFA32900C77E44 /* MCOPOPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BE41706906C00882C15 /* MCOPOPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3E19CFA32900C77E44 /* MCOPOPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639EF17F282B4003B5BA2 /* MCOPOPNoopOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D3F19CFA32900C77E44 /* MCOPOPMessageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BFE1707CEE400882C15 /* MCOPOPMessageInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4019CFA32900C77E44 /* MCOSMTP.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BE81706A6B300882C15 /* MCOSMTP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4119CFA32900C77E44 /* MCOSMTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BBD17068E5E00882C15 /* MCOSMTPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4219CFA32900C77E44 /* MCOSMTPSendOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BC117068E9500882C15 /* MCOSMTPSendOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4319CFA32900C77E44 /* MCOSMTPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8416A99B17F284F400B3C7DA /* MCOSMTPNoopOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4419CFA32900C77E44 /* MCOSMTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BC517068EB000882C15 /* MCOSMTPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4519CFA32900C77E44 /* MCOSMTPOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C60136941776B96600A5AF45 /* MCOSMTPOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D4619CFA32900C77E44 /* MCONNTP.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73761199BFF80005124E5 /* MCONNTP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4719CFA32900C77E44 /* MCONNTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73762199BFFC7005124E5 /* MCONNTPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4819CFA32900C77E44 /* MCONNTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73766199BFFFC005124E5 /* MCONNTPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4919CFA32900C77E44 /* MCONNTPOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376A199C0014005124E5 /* MCONNTPOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D4A19CFA32900C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376B199C005A005124E5 /* MCONNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4B19CFA32900C77E44 /* MCONNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376F199C007E005124E5 /* MCONNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4C19CFA32900C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73789199C0260005124E5 /* MCONNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4D19CFA32900C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4E19CFA32900C77E44 /* MCONNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7378D199C02A8005124E5 /* MCONNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D4F19CFA32900C77E44 /* MCONNTPGroupInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73791199C0511005124E5 /* MCONNTPGroupInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5019CFA32900C77E44 /* MCOAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23616EDAA2B000DB34C /* MCOAbstract.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5119CFA32900C77E44 /* MCOAbstractMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23316EDAA17000DB34C /* MCOAbstractMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5219CFA32900C77E44 /* MCOAbstractMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C58A16FD8C22001BBEFC /* MCOAbstractMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D5319CFA32900C77E44 /* MCOAbstractMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23716EDAA3F000DB34C /* MCOAbstractMessagePart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5419CFA32900C77E44 /* MCOAbstractMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23A16EDAAC7000DB34C /* MCOAbstractMultipart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5519CFA32900C77E44 /* MCOAbstractPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23D16EDAAE0000DB34C /* MCOAbstractPart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5619CFA32900C77E44 /* MCOAbstractPart+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24F16FBEF0E000DB34C /* MCOAbstractPart+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D5719CFA32A00C77E44 /* MCOAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24016EDAAF3000DB34C /* MCOAddress.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5819CFA32A00C77E44 /* MCOAddress+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24616EEF89D000DB34C /* MCOAddress+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D5919CFA32A00C77E44 /* MCOConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26D16FD63F6000DB34C /* MCOConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5A19CFA32A00C77E44 /* MCOMessageHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24316EDAAFD000DB34C /* MCOMessageHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5B19CFA32A00C77E44 /* MCOMessageHeader+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24E16EEFFE2000DB34C /* MCOMessageHeader+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D5C19CFA32A00C77E44 /* MCOHTMLRendererDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C58B16FE52C0001BBEFC /* MCOHTMLRendererDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5D19CFA32A00C77E44 /* MCOHTMLRendererIMAPDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9FF16FED7AB00D9DABD /* MCOHTMLRendererIMAPDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5E19CFA32A00C77E44 /* MCOAbstractMessageRendererCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9FD16FED18500D9DABD /* MCOAbstractMessageRendererCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D5F19CFA32A00C77E44 /* MCOIMAP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25416FD32A0000DB34C /* MCOIMAP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6019CFA32A00C77E44 /* MCOIMAPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = F8EA941416BAED6E0011AC6F /* MCOIMAPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6119CFA32A00C77E44 /* MCOIMAPFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C59116FE750D001BBEFC /* MCOIMAPFolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6219CFA32A00C77E44 /* MCOIMAPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E016FEA1E800D9DABD /* MCOIMAPMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6319CFA32A00C77E44 /* MCOIMAPMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E316FEA27500D9DABD /* MCOIMAPMessagePart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6419CFA32A00C77E44 /* MCOIMAPMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E616FEA28600D9DABD /* MCOIMAPMultipart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6519CFA32A00C77E44 /* MCOIMAPNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E916FEA3B500D9DABD /* MCOIMAPNamespace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6619CFA32A00C77E44 /* MCOIMAPNamespaceItem.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9EC16FEA3C400D9DABD /* MCOIMAPNamespaceItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6719CFA32A00C77E44 /* MCOIMAPPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9EF16FEA3D700D9DABD /* MCOIMAPPart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6819CFA32A00C77E44 /* MCOIMAPFolderInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9D17016EA00073032E /* MCOIMAPFolderInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6919CFA32A00C77E44 /* MCOIMAPFetchFoldersOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F87F190816BB62690012652F /* MCOIMAPFetchFoldersOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6A19CFA32A00C77E44 /* MCOIMAPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C58D16FE6B45001BBEFC /* MCOIMAPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6B19CFA32B00C77E44 /* MCOIMAPFolderInfoOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F79170169EE0073032E /* MCOIMAPFolderInfoOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6C19CFA32B00C77E44 /* MCOIMAPBaseOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61FB31702AB2A0073032E /* MCOIMAPBaseOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6D19CFA32B00C77E44 /* MCOIMAPBaseOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C608167F17766FC5001F1018 /* MCOIMAPBaseOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D6E19CFA32B00C77E44 /* MCOIMAPAppendMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F7C170169FB0073032E /* MCOIMAPAppendMessageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D6F19CFA32B00C77E44 /* MCOIMAPCopyMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F7F17016A0D0073032E /* MCOIMAPCopyMessagesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7019CFA32B00C77E44 /* MCOIMAPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8217016A200073032E /* MCOIMAPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7119CFA32B00C77E44 /* MCOIMAPFetchContentOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8517016AD60073032E /* MCOIMAPFetchContentOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7219CFA32B00C77E44 /* MCOIMAPSearchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8817016AE60073032E /* MCOIMAPSearchOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7319CFA32B00C77E44 /* MCOIMAPIdleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8B17016AFA0073032E /* MCOIMAPIdleOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7419CFA32B00C77E44 /* MCOIMAPFetchNamespaceOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8E17016B090073032E /* MCOIMAPFetchNamespaceOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7519CFA32B00C77E44 /* MCOIMAPIdentityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9117016B250073032E /* MCOIMAPIdentityOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7619CFA32B00C77E44 /* MCOIMAPCapabilityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9417016B310073032E /* MCOIMAPCapabilityOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7719CFA32B00C77E44 /* MCOIMAPQuotaOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3C1BDC17ABF306008BBF4C /* MCOIMAPQuotaOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7819CFA32B00C77E44 /* MCOIMAPSearchExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9717016B460073032E /* MCOIMAPSearchExpression.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7919CFA32C00C77E44 /* MCOIMAPFolderStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9AB06175F2EC60027FA3B /* MCOIMAPFolderStatus.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7A19CFA32C00C77E44 /* MCOIMAPFolderStatusOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9AB16175F35C60027FA3B /* MCOIMAPFolderStatusOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7B19CFA32C00C77E44 /* MCOIMAPMessageRenderingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA89896B178A47D200F6D90A /* MCOIMAPMessageRenderingOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7C19CFA32C00C77E44 /* MCOIMAPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8416A99F17F2871D00B3C7DA /* MCOIMAPNoopOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7D19CFA32C00C77E44 /* MCOIMAPIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = C63D316017C92D8300A4D993 /* MCOIMAPIdentity.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7E19CFA32C00C77E44 /* MCOIMAPMultiDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EFFBCA1833334900CFF656 /* MCOIMAPMultiDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D7F19CFA32C00C77E44 /* MCOAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25C16FD4377000DB34C /* MCOAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8019CFA32C00C77E44 /* MCOMessageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25F16FD438F000DB34C /* MCOMessageBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8119CFA32C00C77E44 /* MCOMessageParser.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26216FD43A1000DB34C /* MCOMessageParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8219CFA32C00C77E44 /* MCOMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26516FD43E2000DB34C /* MCOMessagePart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8319CFA32C00C77E44 /* MCOMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26816FD44C2000DB34C /* MCOMultipart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8419CFA32D00C77E44 /* MCORFC822.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26B16FD4C3B000DB34C /* MCORFC822.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8519CFA32D00C77E44 /* MCOObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = C64FF38F16B3C13000F8C162 /* MCOObjectWrapper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8619CFA32D00C77E44 /* MCOOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25716FD3BC2000DB34C /* MCOOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8719CFA32D00C77E44 /* MCOOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25916FD3BC8000DB34C /* MCOOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D8819CFA32D00C77E44 /* MCOUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26C16FD62FB000DB34C /* MCOUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8919CFA32D00C77E44 /* NSArray+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30FD16B8E50F0091F4F1 /* NSArray+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8A19CFA32D00C77E44 /* NSData+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D42C1916AE03D6002BB4F9 /* NSData+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8B19CFA32D00C77E44 /* NSDictionary+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30F516B8C9480091F4F1 /* NSDictionary+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8C19CFA32D00C77E44 /* NSError+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C07AD44B013BB42A240B4F04 /* NSError+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8D19CFA32D00C77E44 /* NSObject+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30FF16B8E6E50091F4F1 /* NSObject+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8E19CFA32E00C77E44 /* NSString+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D42C1B16AE03D6002BB4F9 /* NSString+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D8F19CFA32E00C77E44 /* NSValue+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25016FC2846000DB34C /* NSValue+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9019CFA32E00C77E44 /* MCOIndexSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9F216FEAC6C00D9DABD /* MCOIndexSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9119CFA32E00C77E44 /* MCOIndexSet+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CCC5CB16FFF7B50077A5FC /* MCOIndexSet+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780D9219CFA32E00C77E44 /* MCORange.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CCC5C816FFE54F0077A5FC /* MCORange.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9319CFA32E00C77E44 /* NSIndexSet+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9419CFA32E00C77E44 /* NSSet+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C643F490189A3D59007EA2F7 /* NSSet+MCO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9519CFA32E00C77E44 /* MCOMailProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B2175324CE006398B9 /* MCOMailProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9619CFA32E00C77E44 /* MCOMailProvidersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B4175324CE006398B9 /* MCOMailProvidersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9719CFA32F00C77E44 /* MCONetService.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B6175324CE006398B9 /* MCONetService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9819CFA32F00C77E44 /* MCOProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B8175324CE006398B9 /* MCOProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9919CFA32F00C77E44 /* MCObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30DC16B5B7770091F4F1 /* MCObjC.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9A19CFA32F00C77E44 /* MCAsyncIMAP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9B19CFA32F00C77E44 /* MCIMAPAsyncConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA68C169E847800778456 /* MCIMAPAsyncConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9C19CFA32F00C77E44 /* MCIMAPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6F0916A8F57700737497 /* MCIMAPAsyncSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9D19CFA32F00C77E44 /* MCIMAPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9E19CFA32F00C77E44 /* MCIMAPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780D9F19CFA33000C77E44 /* MCIMAPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F716A15A7800778456 /* MCIMAPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA019CFA33000C77E44 /* MCIMAPConnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 943F1A9917D964F600F0C798 /* MCIMAPConnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA119CFA33000C77E44 /* MCIMAPFetchFoldersOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA219CFA33000C77E44 /* MCIMAPRenameFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80116A295E300778456 /* MCIMAPRenameFolderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA319CFA33000C77E44 /* MCIMAPDeleteFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80416A2997D00778456 /* MCIMAPDeleteFolderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA419CFA33000C77E44 /* MCIMAPCreateFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80716A2999900778456 /* MCIMAPCreateFolderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA519CFA33000C77E44 /* MCIMAPSubscribeFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80A16A299B600778456 /* MCIMAPSubscribeFolderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA619CFA33100C77E44 /* MCIMAPAppendMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA719CFA33100C77E44 /* MCIMAPCopyMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA819CFA33100C77E44 /* MCIMAPExpungeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81616A29A8600778456 /* MCIMAPExpungeOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DA919CFA33100C77E44 /* MCIMAPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DAA19CFA33100C77E44 /* MCIMAPFetchContentOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DAB19CFA33100C77E44 /* MCIMAPStoreFlagsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81F16A29E3F00778456 /* MCIMAPStoreFlagsOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DAC19CFA33100C77E44 /* MCIMAPStoreLabelsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82216A29E5200778456 /* MCIMAPStoreLabelsOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DAD19CFA33200C77E44 /* MCIMAPSearchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DAE19CFA33200C77E44 /* MCIMAPIdleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DAF19CFA33200C77E44 /* MCIMAPFetchNamespaceOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB019CFA33200C77E44 /* MCIMAPIdentityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB119CFA33200C77E44 /* MCIMAPFolderInfoOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB219CFA33200C77E44 /* MCIMAPCapabilityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB22A16E5C0A3000DB34C /* MCIMAPCapabilityOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB319CFA33200C77E44 /* MCIMAPQuotaOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3C1BE017ABF4BC008BBF4C /* MCIMAPQuotaOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB419CFA33300C77E44 /* MCIMAPFolderStatusOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9AB0E175F30C20027FA3B /* MCIMAPFolderStatusOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB519CFA33300C77E44 /* MCIMAPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C608167A177635D2001F1018 /* MCIMAPDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB619CFA33300C77E44 /* MCIMAPMessageRenderingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0F1C7A177C07B300F0D3B4 /* MCIMAPMessageRenderingOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB719CFA33300C77E44 /* MCIMAPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639EC17F280F3003B5BA2 /* MCIMAPNoopOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB819CFA33300C77E44 /* MCIMAPMultiDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EFFBC7182BBF5700CFF656 /* MCIMAPMultiDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DB919CFA33300C77E44 /* MCAsyncPOP.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EFD16A7DD0300737497 /* MCAsyncPOP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DBA19CFA33400C77E44 /* MCPOPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EEE16A7B67600737497 /* MCPOPAsyncSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DBB19CFA33400C77E44 /* MCPOPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EF116A7C6DE00737497 /* MCPOPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DBC19CFA33400C77E44 /* MCPOPFetchMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EF416A7C6E900737497 /* MCPOPFetchMessageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DBD19CFA33400C77E44 /* MCPOPDeleteMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EF716A7C6F500737497 /* MCPOPDeleteMessagesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DBE19CFA33400C77E44 /* MCPOPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6F0516A7E54400737497 /* MCPOPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DBF19CFA33400C77E44 /* MCPOPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6AC10FF17114DAF00B715B7 /* MCPOPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC019CFA33500C77E44 /* MCPOPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639E717F27EBD003B5BA2 /* MCPOPNoopOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC119CFA33500C77E44 /* MCPOPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EFA16A7C94000737497 /* MCPOPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC219CFA33500C77E44 /* MCPOPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EFC16A7CA1500737497 /* MCPOPOperationCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC319CFA33500C77E44 /* MCAsyncNNTP.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73729199BF63F005124E5 /* MCAsyncNNTP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC419CFA33500C77E44 /* MCNNTPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7372B199BF66C005124E5 /* MCNNTPAsyncSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC519CFA33500C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73736199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC619CFA33600C77E44 /* MCNNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC719CFA33600C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7375B199BFDCA005124E5 /* MCNNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC819CFA33600C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DC919CFA33600C77E44 /* MCNNTPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DCA19CFA33600C77E44 /* MCNNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73757199BFC8A005124E5 /* MCNNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DCB19CFA33700C77E44 /* MCNNTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7372F199BF704005124E5 /* MCNNTPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DCC19CFA33700C77E44 /* MCNNTPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7373F199BF887005124E5 /* MCNNTPOperationCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DCD19CFA33700C77E44 /* MCAsync.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E416A14A4500778456 /* MCAsync.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DCE19CFA33700C77E44 /* MCCertificateUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F7B19E17A1C15200BE78BB /* MCCertificateUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DCF19CFA33700C77E44 /* MCZip.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665AB1796500B0063F2CF /* MCZip.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD019CFA33800C77E44 /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665AE1796500B0063F2CF /* ioapi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD119CFA33800C77E44 /* mztools.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665B01796500B0063F2CF /* mztools.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD219CFA33800C77E44 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665B21796500B0063F2CF /* unzip.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD319CFA33800C77E44 /* zip.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665B41796500B0063F2CF /* zip.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD419CFA33800C77E44 /* MCAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA693169E847800778456 /* MCAbstract.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD519CFA33900C77E44 /* MCAbstractMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA695169E847800778456 /* MCAbstractMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD619CFA33900C77E44 /* MCAbstractMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA697169E847800778456 /* MCAbstractMessagePart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD719CFA33900C77E44 /* MCAbstractMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA699169E847800778456 /* MCAbstractMultipart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD819CFA33900C77E44 /* MCAbstractPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA69B169E847800778456 /* MCAbstractPart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DD919CFA33900C77E44 /* MCAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA69D169E847800778456 /* MCAddress.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DDA19CFA33A00C77E44 /* MCMessageConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA69E169E847800778456 /* MCMessageConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DDB19CFA33A00C77E44 /* MCMessageHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A0169E847800778456 /* MCMessageHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DDC19CFA33A00C77E44 /* MCArray.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A6169E847800778456 /* MCArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DDD19CFA33A00C77E44 /* MCAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A8169E847800778456 /* MCAssert.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DDE19CFA33A00C77E44 /* MCAutoreleasePool.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A3169E847800778456 /* MCAutoreleasePool.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DDF19CFA33B00C77E44 /* MCBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = C67597C417A8D66000DA69DF /* MCBase64.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE019CFA33B00C77E44 /* MCBaseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A4169E847800778456 /* MCBaseTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE119CFA33B00C77E44 /* MCConnectionLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = C68B2AEB1778A589005E61EF /* MCConnectionLogger.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE219CFA33B00C77E44 /* MCConnectionLoggerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C68B2AF617797389005E61EF /* MCConnectionLoggerUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE319CFA33B00C77E44 /* MCData.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6AA169E847800778456 /* MCData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE419CFA33C00C77E44 /* MCHash.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6AC169E847800778456 /* MCHash.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE519CFA33C00C77E44 /* MCHashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6AE169E847800778456 /* MCHashMap.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE619CFA33C00C77E44 /* MCHTMLCleaner.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD69016BE566E00DB18F1 /* MCHTMLCleaner.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE719CFA33C00C77E44 /* MCICUTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F9691720F8F4006F5B28 /* MCICUTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE819CFA33D00C77E44 /* MCIndexSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB22D16E5C1EE000DB34C /* MCIndexSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DE919CFA33D00C77E44 /* MCIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F96D1721028D006F5B28 /* MCIterator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DEA19CFA33D00C77E44 /* MCJSON.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F7F8171E595D006F5B28 /* MCJSON.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DEB19CFA33D00C77E44 /* MCJSONParser.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F966171FCF9F006F5B28 /* MCJSONParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DEC19CFA33E00C77E44 /* MCLibetpan.h in Headers */ = {isa = PBXBuildFile; fileRef = BD63713A177DFF080094121B /* MCLibetpan.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DED19CFA33E00C77E44 /* MCLibetpanTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C6AC1131171249DF00B715B7 /* MCLibetpanTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DEE19CFA33E00C77E44 /* MCLog.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B0169E847800778456 /* MCLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DEF19CFA33E00C77E44 /* MCMainThread.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6BC169E847800778456 /* MCMainThread.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF019CFA33F00C77E44 /* MCMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F951171E5CB8006F5B28 /* MCMD5.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF119CFA33F00C77E44 /* MCNull.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F953171E5CB8006F5B28 /* MCNull.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF219CFA33F00C77E44 /* MCObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B2169E847800778456 /* MCObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF319CFA33F00C77E44 /* MCOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6BF169E847800778456 /* MCOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF419CFA33F00C77E44 /* MCOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C0169E847800778456 /* MCOperationCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF519CFA34000C77E44 /* MCOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C2169E847800778456 /* MCOperationQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF619CFA34000C77E44 /* MCOperationQueueCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C6081678177625AD001F1018 /* MCOperationQueueCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF719CFA34000C77E44 /* MCRange.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B4169E847800778456 /* MCRange.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF819CFA34000C77E44 /* MCSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B6169E847800778456 /* MCSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DF919CFA34100C77E44 /* MCString.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B8169E847800778456 /* MCString.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DFA19CFA34100C77E44 /* MCUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B9169E847800778456 /* MCUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DFB19CFA34100C77E44 /* MCValue.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6BB169E847800778456 /* MCValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DFC19CFA34200C77E44 /* MCValuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25316FC2AA0000DB34C /* MCValuePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780DFD19CFA34200C77E44 /* MCIMAP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C4169E847800778456 /* MCIMAP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DFE19CFA34200C77E44 /* MCIMAPFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C6169E847800778456 /* MCIMAPFolder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780DFF19CFA34200C77E44 /* MCIMAPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C8169E847800778456 /* MCIMAPMessage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0019CFA34300C77E44 /* MCIMAPMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6CA169E847800778456 /* MCIMAPMessagePart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0119CFA34300C77E44 /* MCIMAPMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6CC169E847800778456 /* MCIMAPMultipart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0219CFA34300C77E44 /* MCIMAPNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6CE169E847800778456 /* MCIMAPNamespace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0319CFA34300C77E44 /* MCIMAPNamespaceItem.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D0169E847800778456 /* MCIMAPNamespaceItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0419CFA34400C77E44 /* MCIMAPPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D2169E847800778456 /* MCIMAPPart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0519CFA34400C77E44 /* MCIMAPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D3169E847800778456 /* MCIMAPProgressCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0619CFA34400C77E44 /* MCIMAPSearchExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D5169E847800778456 /* MCIMAPSearchExpression.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0719CFA34500C77E44 /* MCIMAPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D7169E847800778456 /* MCIMAPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0819CFA34500C77E44 /* MCIMAPSyncResult.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB22016E34DCB000DB34C /* MCIMAPSyncResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0919CFA34500C77E44 /* MCIMAPFolderStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E774D871767C54E0065EB9B /* MCIMAPFolderStatus.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0A19CFA34500C77E44 /* MCIMAPIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = C63D315B17C9155C00A4D993 /* MCIMAPIdentity.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0B19CFA34600C77E44 /* MCPOP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D9169E847800778456 /* MCPOP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0C19CFA34600C77E44 /* MCPOPMessageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6DB169E847800778456 /* MCPOPMessageInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0D19CFA34600C77E44 /* MCPOPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6DC169E847800778456 /* MCPOPProgressCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0E19CFA34600C77E44 /* MCPOPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6DE169E847800778456 /* MCPOPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E0F19CFA34700C77E44 /* MCNNTP.h in Headers */ = {isa = PBXBuildFile; fileRef = 8491899C18C93F92002063A3 /* MCNNTP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1019CFA34700C77E44 /* MCNNTPGroupInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 849189AA18C94986002063A3 /* MCNNTPGroupInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1119CFA34700C77E44 /* MCNNTPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73732199BF754005124E5 /* MCNNTPProgressCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1219CFA34800C77E44 /* MCNNTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 849189A018C93FB7002063A3 /* MCNNTPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1319CFA34800C77E44 /* MCAddressDisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67816BDCDD400DB18F1 /* MCAddressDisplay.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1419CFA34800C77E44 /* MCDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67A16BDCDD400DB18F1 /* MCDateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1519CFA34800C77E44 /* MCSizeFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67E16BDCDD400DB18F1 /* MCSizeFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1619CFA34900C77E44 /* MCHTMLRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67C16BDCDD400DB18F1 /* MCHTMLRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1719CFA34900C77E44 /* MCHTMLRendererCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD68516BE148B00DB18F1 /* MCHTMLRendererCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1819CFA34900C77E44 /* MCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD68716BE1AB600DB18F1 /* MCRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1919CFA34A00C77E44 /* MCHTMLBodyRendererTemplateCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD28C8A1783CFFC00F2BB8F /* MCHTMLBodyRendererTemplateCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1A19CFA34A00C77E44 /* MCHTMLRendererIMAPDataCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = DAACAD5017886807000B4517 /* MCHTMLRendererIMAPDataCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1B19CFA34A00C77E44 /* MCAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E1169E847800778456 /* MCAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1C19CFA34B00C77E44 /* MCMessageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E3169E847800778456 /* MCMessageBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1D19CFA34B00C77E44 /* MCMessageParser.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E5169E847800778456 /* MCMessageParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1E19CFA34B00C77E44 /* MCMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E7169E847800778456 /* MCMessagePart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E1F19CFA34C00C77E44 /* MCMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E9169E847800778456 /* MCMultipart.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2019CFA34C00C77E44 /* MCRFC822.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6EA169E847800778456 /* MCRFC822.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2119CFA34C00C77E44 /* MCSMTP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6EC169E847800778456 /* MCSMTP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2219CFA34C00C77E44 /* MCSMTPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6ED169E847800778456 /* MCSMTPProgressCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2319CFA34D00C77E44 /* MCSMTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6EF169E847800778456 /* MCSMTPSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2419CFA34D00C77E44 /* MCMailProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C0175324F0006398B9 /* MCMailProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2519CFA34D00C77E44 /* MCMailProvidersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C2175324F0006398B9 /* MCMailProvidersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2619CFA34E00C77E44 /* MCNetService.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C4175324F0006398B9 /* MCNetService.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2719CFA34E00C77E44 /* MCProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C5175324F0006398B9 /* MCProvider.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2819CFA34E00C77E44 /* MCCore.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA782169F23AB00778456 /* MCCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2919CFA34F00C77E44 /* MailCore.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7A4169F2A3E00778456 /* MailCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2A19CFA39900C77E44 /* MCAsyncSMTP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E316A149EF00778456 /* MCAsyncSMTP.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2B19CFA39900C77E44 /* MCSMTPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA690169E847800778456 /* MCSMTPAsyncSession.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2C19CFA39900C77E44 /* MCSMTPSendWithDataOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA79D169F29A700778456 /* MCSMTPSendWithDataOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2D19CFA39900C77E44 /* MCSMTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C608167417759967001F1018 /* MCSMTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2E19CFA39900C77E44 /* MCSMTPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639E217F279BB003B5BA2 /* MCSMTPNoopOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E2F19CFA39900C77E44 /* MCSMTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7D916A1386600778456 /* MCSMTPOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E3019CFA39900C77E44 /* MCSMTPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E116A1425400778456 /* MCSMTPOperationCallback.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E3119CFA39900C77E44 /* MCSMTPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E916A154B200778456 /* MCSMTPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27780E3219CFA3F500C77E44 /* MCOFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = C6BD28A8170BDB6B00A91AC1 /* MCOFramework.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3319CFA3F500C77E44 /* MCOPOP.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BFB170781BC00882C15 /* MCOPOP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3419CFA3F500C77E44 /* MCOPOPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BD41706903500882C15 /* MCOPOPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3519CFA3F500C77E44 /* MCOPOPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BE01706905600882C15 /* MCOPOPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3619CFA3F500C77E44 /* MCOPOPOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C60136951776C31000A5AF45 /* MCOPOPOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3719CFA3F500C77E44 /* MCOPOPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BD81706903E00882C15 /* MCOPOPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3819CFA3F500C77E44 /* MCOPOPFetchMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BDC1706904800882C15 /* MCOPOPFetchMessageOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3919CFA3F500C77E44 /* MCOPOPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BE41706906C00882C15 /* MCOPOPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3A19CFA3F500C77E44 /* MCOPOPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639EF17F282B4003B5BA2 /* MCOPOPNoopOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3B19CFA3F500C77E44 /* MCOPOPMessageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BFE1707CEE400882C15 /* MCOPOPMessageInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3C19CFA3F500C77E44 /* MCOSMTP.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BE81706A6B300882C15 /* MCOSMTP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3D19CFA3F500C77E44 /* MCOSMTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BBD17068E5E00882C15 /* MCOSMTPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3E19CFA3F500C77E44 /* MCOSMTPSendOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BC117068E9500882C15 /* MCOSMTPSendOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E3F19CFA3F500C77E44 /* MCOSMTPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8416A99B17F284F400B3C7DA /* MCOSMTPNoopOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4019CFA3F500C77E44 /* MCOSMTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6A81BC517068EB000882C15 /* MCOSMTPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4119CFA3F500C77E44 /* MCOSMTPOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C60136941776B96600A5AF45 /* MCOSMTPOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4219CFA3F500C77E44 /* MCONNTP.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73761199BFF80005124E5 /* MCONNTP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4319CFA3F500C77E44 /* MCONNTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73762199BFFC7005124E5 /* MCONNTPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4419CFA3F500C77E44 /* MCONNTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73766199BFFFC005124E5 /* MCONNTPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4519CFA3F500C77E44 /* MCONNTPOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376A199C0014005124E5 /* MCONNTPOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4619CFA3F500C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376B199C005A005124E5 /* MCONNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4719CFA3F500C77E44 /* MCONNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7376F199C007E005124E5 /* MCONNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4819CFA3F500C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73789199C0260005124E5 /* MCONNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4919CFA3F500C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73773199C00AB005124E5 /* MCONNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4A19CFA3F500C77E44 /* MCONNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7378D199C02A8005124E5 /* MCONNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4B19CFA3F500C77E44 /* MCONNTPGroupInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73791199C0511005124E5 /* MCONNTPGroupInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4C19CFA3F500C77E44 /* MCOAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23616EDAA2B000DB34C /* MCOAbstract.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4D19CFA3F500C77E44 /* MCOAbstractMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23316EDAA17000DB34C /* MCOAbstractMessage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4E19CFA3F500C77E44 /* MCOAbstractMessage+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C58A16FD8C22001BBEFC /* MCOAbstractMessage+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E4F19CFA3F500C77E44 /* MCOAbstractMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23716EDAA3F000DB34C /* MCOAbstractMessagePart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5019CFA3F500C77E44 /* MCOAbstractMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23A16EDAAC7000DB34C /* MCOAbstractMultipart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5119CFA3F600C77E44 /* MCOAbstractPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB23D16EDAAE0000DB34C /* MCOAbstractPart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5219CFA3F600C77E44 /* MCOAbstractPart+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24F16FBEF0E000DB34C /* MCOAbstractPart+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5319CFA3F600C77E44 /* MCOAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24016EDAAF3000DB34C /* MCOAddress.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5419CFA3F600C77E44 /* MCOAddress+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24616EEF89D000DB34C /* MCOAddress+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5519CFA3F600C77E44 /* MCOConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26D16FD63F6000DB34C /* MCOConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5619CFA3F600C77E44 /* MCOMessageHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24316EDAAFD000DB34C /* MCOMessageHeader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5719CFA3F600C77E44 /* MCOMessageHeader+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB24E16EEFFE2000DB34C /* MCOMessageHeader+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5819CFA3F600C77E44 /* MCOHTMLRendererDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C58B16FE52C0001BBEFC /* MCOHTMLRendererDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5919CFA3F600C77E44 /* MCOHTMLRendererIMAPDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9FF16FED7AB00D9DABD /* MCOHTMLRendererIMAPDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5A19CFA3F600C77E44 /* MCOAbstractMessageRendererCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9FD16FED18500D9DABD /* MCOAbstractMessageRendererCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5B19CFA3F600C77E44 /* MCOIMAP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25416FD32A0000DB34C /* MCOIMAP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5C19CFA3F600C77E44 /* MCOIMAPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = F8EA941416BAED6E0011AC6F /* MCOIMAPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5D19CFA3F600C77E44 /* MCOIMAPFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C59116FE750D001BBEFC /* MCOIMAPFolder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5E19CFA3F600C77E44 /* MCOIMAPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E016FEA1E800D9DABD /* MCOIMAPMessage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E5F19CFA3F600C77E44 /* MCOIMAPMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E316FEA27500D9DABD /* MCOIMAPMessagePart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6019CFA3F600C77E44 /* MCOIMAPMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E616FEA28600D9DABD /* MCOIMAPMultipart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6119CFA3F600C77E44 /* MCOIMAPNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9E916FEA3B500D9DABD /* MCOIMAPNamespace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6219CFA3F600C77E44 /* MCOIMAPNamespaceItem.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9EC16FEA3C400D9DABD /* MCOIMAPNamespaceItem.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6319CFA3F600C77E44 /* MCOIMAPPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9EF16FEA3D700D9DABD /* MCOIMAPPart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6419CFA3F600C77E44 /* MCOIMAPFolderInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9D17016EA00073032E /* MCOIMAPFolderInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6519CFA3F700C77E44 /* MCOIMAPFetchFoldersOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F87F190816BB62690012652F /* MCOIMAPFetchFoldersOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6619CFA3F700C77E44 /* MCOIMAPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C623C58D16FE6B45001BBEFC /* MCOIMAPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6719CFA3F700C77E44 /* MCOIMAPFolderInfoOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F79170169EE0073032E /* MCOIMAPFolderInfoOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6819CFA3F700C77E44 /* MCOIMAPBaseOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61FB31702AB2A0073032E /* MCOIMAPBaseOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6919CFA3F700C77E44 /* MCOIMAPBaseOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C608167F17766FC5001F1018 /* MCOIMAPBaseOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6A19CFA3F700C77E44 /* MCOIMAPAppendMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F7C170169FB0073032E /* MCOIMAPAppendMessageOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6B19CFA3F700C77E44 /* MCOIMAPCopyMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F7F17016A0D0073032E /* MCOIMAPCopyMessagesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6C19CFA3F700C77E44 /* MCOIMAPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8217016A200073032E /* MCOIMAPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6D19CFA3F700C77E44 /* MCOIMAPFetchContentOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8517016AD60073032E /* MCOIMAPFetchContentOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6E19CFA3F700C77E44 /* MCOIMAPSearchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8817016AE60073032E /* MCOIMAPSearchOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E6F19CFA3F700C77E44 /* MCOIMAPIdleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8B17016AFA0073032E /* MCOIMAPIdleOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7019CFA3F700C77E44 /* MCOIMAPFetchNamespaceOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F8E17016B090073032E /* MCOIMAPFetchNamespaceOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7119CFA3F700C77E44 /* MCOIMAPIdentityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9117016B250073032E /* MCOIMAPIdentityOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7219CFA3F700C77E44 /* MCOIMAPCapabilityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9417016B310073032E /* MCOIMAPCapabilityOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7319CFA3F700C77E44 /* MCOIMAPQuotaOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3C1BDC17ABF306008BBF4C /* MCOIMAPQuotaOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7419CFA3F800C77E44 /* MCOIMAPSearchExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F61F9717016B460073032E /* MCOIMAPSearchExpression.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7519CFA3F800C77E44 /* MCOIMAPFolderStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9AB06175F2EC60027FA3B /* MCOIMAPFolderStatus.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7619CFA3F800C77E44 /* MCOIMAPFolderStatusOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9AB16175F35C60027FA3B /* MCOIMAPFolderStatusOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7719CFA3F800C77E44 /* MCOIMAPMessageRenderingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA89896B178A47D200F6D90A /* MCOIMAPMessageRenderingOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7819CFA3F800C77E44 /* MCOIMAPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8416A99F17F2871D00B3C7DA /* MCOIMAPNoopOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7919CFA3F800C77E44 /* MCOIMAPIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = C63D316017C92D8300A4D993 /* MCOIMAPIdentity.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7A19CFA3F800C77E44 /* MCOIMAPMultiDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EFFBCA1833334900CFF656 /* MCOIMAPMultiDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7B19CFA3F800C77E44 /* MCOObjectWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = C64FF38F16B3C13000F8C162 /* MCOObjectWrapper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7C19CFA3F800C77E44 /* MCOOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25716FD3BC2000DB34C /* MCOOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7D19CFA3F800C77E44 /* MCOOperation+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25916FD3BC8000DB34C /* MCOOperation+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7E19CFA3F800C77E44 /* MCOUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26C16FD62FB000DB34C /* MCOUtils.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E7F19CFA3F900C77E44 /* NSArray+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30FD16B8E50F0091F4F1 /* NSArray+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8019CFA3F900C77E44 /* NSData+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D42C1916AE03D6002BB4F9 /* NSData+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8119CFA3F900C77E44 /* NSDictionary+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30F516B8C9480091F4F1 /* NSDictionary+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8219CFA3F900C77E44 /* NSError+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C07AD44B013BB42A240B4F04 /* NSError+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8319CFA3F900C77E44 /* NSObject+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30FF16B8E6E50091F4F1 /* NSObject+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8419CFA3F900C77E44 /* NSString+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D42C1B16AE03D6002BB4F9 /* NSString+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8519CFA3F900C77E44 /* NSValue+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25016FC2846000DB34C /* NSValue+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8619CFA3F900C77E44 /* MCOIndexSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F5B9F216FEAC6C00D9DABD /* MCOIndexSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8719CFA3F900C77E44 /* MCOIndexSet+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CCC5CB16FFF7B50077A5FC /* MCOIndexSet+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8819CFA3F900C77E44 /* MCORange.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CCC5C816FFE54F0077A5FC /* MCORange.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8919CFA3FA00C77E44 /* NSIndexSet+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C69BA85917DEFCCB00D601B7 /* NSIndexSet+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8A19CFA3FA00C77E44 /* NSSet+MCO.h in Headers */ = {isa = PBXBuildFile; fileRef = C643F490189A3D59007EA2F7 /* NSSet+MCO.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8B19CFA3FA00C77E44 /* MCOMailProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B2175324CE006398B9 /* MCOMailProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8C19CFA3FA00C77E44 /* MCOMailProvidersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B4175324CE006398B9 /* MCOMailProvidersManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8D19CFA3FA00C77E44 /* MCONetService.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B6175324CE006398B9 /* MCONetService.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8E19CFA3FA00C77E44 /* MCOProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62B8175324CE006398B9 /* MCOProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E8F19CFA3FA00C77E44 /* MCObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EB30DC16B5B7770091F4F1 /* MCObjC.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9019CFA3FA00C77E44 /* MCAsyncIMAP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F916A15A9200778456 /* MCAsyncIMAP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9119CFA3FA00C77E44 /* MCIMAPAsyncConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA68C169E847800778456 /* MCIMAPAsyncConnection.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9219CFA3FB00C77E44 /* MCIMAPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6F0916A8F57700737497 /* MCIMAPAsyncSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9319CFA3FB00C77E44 /* MCIMAPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F016A15A4D00778456 /* MCIMAPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9419CFA3FB00C77E44 /* MCIMAPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F416A15A6300778456 /* MCIMAPOperationCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9519CFA3FB00C77E44 /* MCIMAPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7F716A15A7800778456 /* MCIMAPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9619CFA3FB00C77E44 /* MCIMAPConnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 943F1A9917D964F600F0C798 /* MCIMAPConnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9719CFA3FB00C77E44 /* MCIMAPFetchFoldersOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7FB16A2959700778456 /* MCIMAPFetchFoldersOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9819CFA3FB00C77E44 /* MCIMAPRenameFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80116A295E300778456 /* MCIMAPRenameFolderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9919CFA3FB00C77E44 /* MCIMAPDeleteFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80416A2997D00778456 /* MCIMAPDeleteFolderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9A19CFA3FC00C77E44 /* MCIMAPCreateFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80716A2999900778456 /* MCIMAPCreateFolderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9B19CFA3FC00C77E44 /* MCIMAPSubscribeFolderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA80A16A299B600778456 /* MCIMAPSubscribeFolderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9C19CFA3FC00C77E44 /* MCIMAPAppendMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81016A299EB00778456 /* MCIMAPAppendMessageOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9D19CFA3FC00C77E44 /* MCIMAPCopyMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81316A29A1000778456 /* MCIMAPCopyMessagesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9E19CFA3FC00C77E44 /* MCIMAPExpungeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81616A29A8600778456 /* MCIMAPExpungeOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780E9F19CFA3FC00C77E44 /* MCIMAPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81916A29ADB00778456 /* MCIMAPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA019CFA3FC00C77E44 /* MCIMAPFetchContentOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81C16A29DC400778456 /* MCIMAPFetchContentOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA119CFA3FC00C77E44 /* MCIMAPStoreFlagsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA81F16A29E3F00778456 /* MCIMAPStoreFlagsOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA219CFA3FD00C77E44 /* MCIMAPStoreLabelsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82216A29E5200778456 /* MCIMAPStoreLabelsOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA319CFA3FD00C77E44 /* MCIMAPSearchOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82516A29EE300778456 /* MCIMAPSearchOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA419CFA3FD00C77E44 /* MCIMAPIdleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82816A29F0300778456 /* MCIMAPIdleOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA519CFA3FD00C77E44 /* MCIMAPFetchNamespaceOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA82B16A2A01400778456 /* MCIMAPFetchNamespaceOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA619CFA3FD00C77E44 /* MCIMAPIdentityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA719CFA3FD00C77E44 /* MCIMAPFolderInfoOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6ED716A398FA00737497 /* MCIMAPFolderInfoOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA819CFA3FD00C77E44 /* MCIMAPCapabilityOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB22A16E5C0A3000DB34C /* MCIMAPCapabilityOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EA919CFA3FE00C77E44 /* MCIMAPQuotaOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3C1BE017ABF4BC008BBF4C /* MCIMAPQuotaOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EAA19CFA3FE00C77E44 /* MCIMAPFolderStatusOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EF9AB0E175F30C20027FA3B /* MCIMAPFolderStatusOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EAB19CFA3FE00C77E44 /* MCIMAPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C608167A177635D2001F1018 /* MCIMAPDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EAC19CFA3FE00C77E44 /* MCIMAPMessageRenderingOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0F1C7A177C07B300F0D3B4 /* MCIMAPMessageRenderingOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EAD19CFA3FE00C77E44 /* MCIMAPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639EC17F280F3003B5BA2 /* MCIMAPNoopOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EAE19CFA3FE00C77E44 /* MCIMAPMultiDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6EFFBC7182BBF5700CFF656 /* MCIMAPMultiDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EAF19CFA3FE00C77E44 /* MCAsyncPOP.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EFD16A7DD0300737497 /* MCAsyncPOP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB019CFA3FF00C77E44 /* MCPOPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EEE16A7B67600737497 /* MCPOPAsyncSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB119CFA3FF00C77E44 /* MCPOPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EF116A7C6DE00737497 /* MCPOPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB219CFA3FF00C77E44 /* MCPOPFetchMessageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EF416A7C6E900737497 /* MCPOPFetchMessageOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB319CFA3FF00C77E44 /* MCPOPDeleteMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EF716A7C6F500737497 /* MCPOPDeleteMessagesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB419CFA3FF00C77E44 /* MCPOPFetchMessagesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6F0516A7E54400737497 /* MCPOPFetchMessagesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB519CFA3FF00C77E44 /* MCPOPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C6AC10FF17114DAF00B715B7 /* MCPOPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB619CFA40000C77E44 /* MCPOPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639E717F27EBD003B5BA2 /* MCPOPNoopOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB719CFA40000C77E44 /* MCPOPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EFA16A7C94000737497 /* MCPOPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB819CFA40000C77E44 /* MCPOPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C62C6EFC16A7CA1500737497 /* MCPOPOperationCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EB919CFA40000C77E44 /* MCAsyncNNTP.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73729199BF63F005124E5 /* MCAsyncNNTP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EBA19CFA40000C77E44 /* MCNNTPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7372B199BF66C005124E5 /* MCNNTPAsyncSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EBB19CFA40000C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73736199BF7F2005124E5 /* MCNNTPFetchHeaderOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EBC19CFA40100C77E44 /* MCNNTPFetchArticleOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7373C199BF83B005124E5 /* MCNNTPFetchArticleOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EBD19CFA40100C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7375B199BFDCA005124E5 /* MCNNTPListNewsgroupsOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EBE19CFA40100C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73741199BF963005124E5 /* MCNNTPFetchArticlesOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EBF19CFA40100C77E44 /* MCNNTPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73745199BFA8C005124E5 /* MCNNTPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC019CFA40100C77E44 /* MCNNTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73757199BFC8A005124E5 /* MCNNTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC119CFA40200C77E44 /* MCNNTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7372F199BF704005124E5 /* MCNNTPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC219CFA40200C77E44 /* MCNNTPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D7373F199BF887005124E5 /* MCNNTPOperationCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC319CFA40200C77E44 /* MCAsyncSMTP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E316A149EF00778456 /* MCAsyncSMTP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC419CFA40200C77E44 /* MCSMTPAsyncSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA690169E847800778456 /* MCSMTPAsyncSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC519CFA40200C77E44 /* MCSMTPSendWithDataOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA79D169F29A700778456 /* MCSMTPSendWithDataOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC619CFA40200C77E44 /* MCSMTPDisconnectOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C608167417759967001F1018 /* MCSMTPDisconnectOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC719CFA40300C77E44 /* MCSMTPNoopOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 84B639E217F279BB003B5BA2 /* MCSMTPNoopOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC819CFA40300C77E44 /* MCSMTPOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7D916A1386600778456 /* MCSMTPOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EC919CFA40300C77E44 /* MCSMTPOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E116A1425400778456 /* MCSMTPOperationCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ECA19CFA40300C77E44 /* MCSMTPCheckAccountOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E916A154B200778456 /* MCSMTPCheckAccountOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ECB19CFA40300C77E44 /* MCAsync.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7E416A14A4500778456 /* MCAsync.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ECC19CFA40400C77E44 /* MCCertificateUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C6F7B19E17A1C15200BE78BB /* MCCertificateUtils.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ECD19CFA40400C77E44 /* MCZip.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665AB1796500B0063F2CF /* MCZip.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ECE19CFA40400C77E44 /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665AE1796500B0063F2CF /* ioapi.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ECF19CFA40400C77E44 /* mztools.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665B01796500B0063F2CF /* mztools.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED019CFA40400C77E44 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665B21796500B0063F2CF /* unzip.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED119CFA40500C77E44 /* zip.h in Headers */ = {isa = PBXBuildFile; fileRef = C6E665B41796500B0063F2CF /* zip.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED219CFA40500C77E44 /* MCAbstract.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA693169E847800778456 /* MCAbstract.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED319CFA40500C77E44 /* MCAbstractMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA695169E847800778456 /* MCAbstractMessage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED419CFA40500C77E44 /* MCAbstractMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA697169E847800778456 /* MCAbstractMessagePart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED519CFA40500C77E44 /* MCAbstractMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA699169E847800778456 /* MCAbstractMultipart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED619CFA40600C77E44 /* MCAbstractPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA69B169E847800778456 /* MCAbstractPart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED719CFA40600C77E44 /* MCAddress.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA69D169E847800778456 /* MCAddress.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED819CFA40600C77E44 /* MCMessageConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA69E169E847800778456 /* MCMessageConstants.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780ED919CFA40600C77E44 /* MCMessageHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A0169E847800778456 /* MCMessageHeader.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EDA19CFA40600C77E44 /* MCArray.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A6169E847800778456 /* MCArray.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EDB19CFA40700C77E44 /* MCAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A8169E847800778456 /* MCAssert.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EDC19CFA40700C77E44 /* MCAutoreleasePool.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A3169E847800778456 /* MCAutoreleasePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EDD19CFA40700C77E44 /* MCBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = C67597C417A8D66000DA69DF /* MCBase64.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EDE19CFA40700C77E44 /* MCBaseTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6A4169E847800778456 /* MCBaseTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EDF19CFA40800C77E44 /* MCConnectionLogger.h in Headers */ = {isa = PBXBuildFile; fileRef = C68B2AEB1778A589005E61EF /* MCConnectionLogger.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE019CFA40800C77E44 /* MCConnectionLoggerUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C68B2AF617797389005E61EF /* MCConnectionLoggerUtils.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE119CFA40800C77E44 /* MCData.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6AA169E847800778456 /* MCData.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE219CFA40800C77E44 /* MCHash.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6AC169E847800778456 /* MCHash.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE319CFA40900C77E44 /* MCHashMap.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6AE169E847800778456 /* MCHashMap.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE419CFA40900C77E44 /* MCHTMLCleaner.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD69016BE566E00DB18F1 /* MCHTMLCleaner.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE519CFA40900C77E44 /* MCICUTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F9691720F8F4006F5B28 /* MCICUTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE619CFA40900C77E44 /* MCIndexSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB22D16E5C1EE000DB34C /* MCIndexSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE719CFA40900C77E44 /* MCIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F96D1721028D006F5B28 /* MCIterator.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE819CFA40A00C77E44 /* MCJSON.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F7F8171E595D006F5B28 /* MCJSON.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EE919CFA40A00C77E44 /* MCJSONParser.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F966171FCF9F006F5B28 /* MCJSONParser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EEA19CFA40A00C77E44 /* MCLibetpan.h in Headers */ = {isa = PBXBuildFile; fileRef = BD63713A177DFF080094121B /* MCLibetpan.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EEB19CFA40A00C77E44 /* MCLibetpanTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = C6AC1131171249DF00B715B7 /* MCLibetpanTypes.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EEC19CFA40B00C77E44 /* MCLog.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B0169E847800778456 /* MCLog.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EED19CFA40B00C77E44 /* MCMainThread.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6BC169E847800778456 /* MCMainThread.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EEE19CFA40B00C77E44 /* MCMD5.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F951171E5CB8006F5B28 /* MCMD5.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EEF19CFA40B00C77E44 /* MCNull.h in Headers */ = {isa = PBXBuildFile; fileRef = C6D6F953171E5CB8006F5B28 /* MCNull.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF019CFA40C00C77E44 /* MCObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B2169E847800778456 /* MCObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF119CFA40C00C77E44 /* MCOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6BF169E847800778456 /* MCOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF219CFA40C00C77E44 /* MCOperationCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C0169E847800778456 /* MCOperationCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF319CFA40C00C77E44 /* MCOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C2169E847800778456 /* MCOperationQueue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF419CFA40D00C77E44 /* MCOperationQueueCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C6081678177625AD001F1018 /* MCOperationQueueCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF519CFA40D00C77E44 /* MCRange.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B4169E847800778456 /* MCRange.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF619CFA40D00C77E44 /* MCSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B6169E847800778456 /* MCSet.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF719CFA40D00C77E44 /* MCString.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B8169E847800778456 /* MCString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF819CFA40E00C77E44 /* MCUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6B9169E847800778456 /* MCUtils.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EF919CFA40E00C77E44 /* MCValue.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6BB169E847800778456 /* MCValue.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EFA19CFA40E00C77E44 /* MCValuePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25316FC2AA0000DB34C /* MCValuePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EFB19CFA40E00C77E44 /* MCIMAP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C4169E847800778456 /* MCIMAP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EFC19CFA40F00C77E44 /* MCIMAPFolder.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C6169E847800778456 /* MCIMAPFolder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EFD19CFA40F00C77E44 /* MCIMAPMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6C8169E847800778456 /* MCIMAPMessage.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EFE19CFA40F00C77E44 /* MCIMAPMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6CA169E847800778456 /* MCIMAPMessagePart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780EFF19CFA41000C77E44 /* MCIMAPMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6CC169E847800778456 /* MCIMAPMultipart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0019CFA41000C77E44 /* MCIMAPNamespace.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6CE169E847800778456 /* MCIMAPNamespace.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0119CFA41000C77E44 /* MCIMAPNamespaceItem.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D0169E847800778456 /* MCIMAPNamespaceItem.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0219CFA41000C77E44 /* MCIMAPPart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D2169E847800778456 /* MCIMAPPart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0319CFA41100C77E44 /* MCIMAPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D3169E847800778456 /* MCIMAPProgressCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0419CFA41100C77E44 /* MCIMAPSearchExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D5169E847800778456 /* MCIMAPSearchExpression.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0519CFA41100C77E44 /* MCIMAPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D7169E847800778456 /* MCIMAPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0619CFA41200C77E44 /* MCIMAPSyncResult.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB22016E34DCB000DB34C /* MCIMAPSyncResult.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0719CFA41200C77E44 /* MCIMAPFolderStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E774D871767C54E0065EB9B /* MCIMAPFolderStatus.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0819CFA41200C77E44 /* MCIMAPIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = C63D315B17C9155C00A4D993 /* MCIMAPIdentity.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0919CFA41200C77E44 /* MCNNTP.h in Headers */ = {isa = PBXBuildFile; fileRef = 8491899C18C93F92002063A3 /* MCNNTP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0A19CFA41300C77E44 /* MCNNTPGroupInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 849189AA18C94986002063A3 /* MCNNTPGroupInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0B19CFA41300C77E44 /* MCNNTPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 84D73732199BF754005124E5 /* MCNNTPProgressCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0C19CFA41300C77E44 /* MCNNTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = 849189A018C93FB7002063A3 /* MCNNTPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0D19CFA41400C77E44 /* MCAddressDisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67816BDCDD400DB18F1 /* MCAddressDisplay.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0E19CFA41400C77E44 /* MCDateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67A16BDCDD400DB18F1 /* MCDateFormatter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F0F19CFA41400C77E44 /* MCSizeFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67E16BDCDD400DB18F1 /* MCSizeFormatter.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1019CFA41400C77E44 /* MCHTMLRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD67C16BDCDD400DB18F1 /* MCHTMLRenderer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1119CFA41500C77E44 /* MCHTMLRendererCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD68516BE148B00DB18F1 /* MCHTMLRendererCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1219CFA41500C77E44 /* MCRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = C63CD68716BE1AB600DB18F1 /* MCRenderer.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1319CFA41500C77E44 /* MCHTMLBodyRendererTemplateCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD28C8A1783CFFC00F2BB8F /* MCHTMLBodyRendererTemplateCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1419CFA41600C77E44 /* MCHTMLRendererIMAPDataCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = DAACAD5017886807000B4517 /* MCHTMLRendererIMAPDataCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1519CFA41600C77E44 /* MCAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E1169E847800778456 /* MCAttachment.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1619CFA41600C77E44 /* MCMessageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E3169E847800778456 /* MCMessageBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1719CFA41700C77E44 /* MCMessageParser.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E5169E847800778456 /* MCMessageParser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1819CFA41700C77E44 /* MCMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E7169E847800778456 /* MCMessagePart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1919CFA41700C77E44 /* MCMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6E9169E847800778456 /* MCMultipart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1A19CFA41800C77E44 /* MCRFC822.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6EA169E847800778456 /* MCRFC822.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1B19CFA41800C77E44 /* MCSMTP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6EC169E847800778456 /* MCSMTP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1C19CFA41800C77E44 /* MCSMTPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6ED169E847800778456 /* MCSMTPProgressCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1D19CFA41900C77E44 /* MCSMTPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6EF169E847800778456 /* MCSMTPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1E19CFA41900C77E44 /* MCMailProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C0175324F0006398B9 /* MCMailProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F1F19CFA41900C77E44 /* MCMailProvidersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C2175324F0006398B9 /* MCMailProvidersManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2019CFA41A00C77E44 /* MCNetService.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C4175324F0006398B9 /* MCNetService.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2119CFA41A00C77E44 /* MCProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = C6CF62C5175324F0006398B9 /* MCProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2219CFA41A00C77E44 /* MCCore.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA782169F23AB00778456 /* MCCore.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2319CFA41B00C77E44 /* MailCore.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA7A4169F2A3E00778456 /* MailCore.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2419CFA52800C77E44 /* MCOAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25C16FD4377000DB34C /* MCOAttachment.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2519CFA52800C77E44 /* MCOMessageBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB25F16FD438F000DB34C /* MCOMessageBuilder.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2619CFA52800C77E44 /* MCOMessageParser.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26216FD43A1000DB34C /* MCOMessageParser.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2719CFA52800C77E44 /* MCOMessagePart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26516FD43E2000DB34C /* MCOMessagePart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2819CFA52800C77E44 /* MCOMultipart.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26816FD44C2000DB34C /* MCOMultipart.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2919CFA52800C77E44 /* MCORFC822.h in Headers */ = {isa = PBXBuildFile; fileRef = C64BB26B16FD4C3B000DB34C /* MCORFC822.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2A19CFA52800C77E44 /* MCPOP.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6D9169E847800778456 /* MCPOP.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2B19CFA52800C77E44 /* MCPOPMessageInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6DB169E847800778456 /* MCPOPMessageInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2C19CFA52800C77E44 /* MCPOPProgressCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6DC169E847800778456 /* MCPOPProgressCallback.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 27780F2D19CFA52800C77E44 /* MCPOPSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C64EA6DE169E847800778456 /* MCPOPSession.h */; settings = {ATTRIBUTES = (Private, ); }; }; 4B3C1BDE17ABF309008BBF4C /* MCOIMAPQuotaOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4B3C1BDD17ABF307008BBF4C /* MCOIMAPQuotaOperation.mm */; }; 4B3C1BE117ABF4BC008BBF4C /* MCIMAPQuotaOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4B3C1BDF17ABF4BB008BBF4C /* MCIMAPQuotaOperation.cc */; }; 4B3C1BE217ABFF7C008BBF4C /* MCOIMAPQuotaOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B3C1BDC17ABF306008BBF4C /* MCOIMAPQuotaOperation.h */; }; @@ -833,6 +1342,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 27780C3F19CF9DE600C77E44 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = C64EA52E169E772200778456 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C6BA2B091705F4E6003F0E9E; + remoteInfo = "static mailcore2 ios"; + }; C6A81BB01706852200882C15 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = C64EA52E169E772200778456 /* Project object */; @@ -1293,6 +1809,9 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 27780C3A19CF9CD100C77E44 /* MailCore-ios.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = "MailCore-ios.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 27780C3C19CF9D9800C77E44 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; }; + 27780D3419CFA19500C77E44 /* libstdc++.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.dylib"; path = "Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/usr/lib/libstdc++.dylib"; sourceTree = DEVELOPER_DIR; }; 4B3C1BDC17ABF306008BBF4C /* MCOIMAPQuotaOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOIMAPQuotaOperation.h; sourceTree = "<group>"; }; 4B3C1BDD17ABF307008BBF4C /* MCOIMAPQuotaOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOIMAPQuotaOperation.mm; sourceTree = "<group>"; }; 4B3C1BDF17ABF4BB008BBF4C /* MCIMAPQuotaOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPQuotaOperation.cc; sourceTree = "<group>"; }; @@ -1772,6 +2291,16 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 27780C3019CF9CD100C77E44 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 27780C3E19CF9DDF00C77E44 /* libMailCore-ios.a in Frameworks */, + 27780C3D19CF9D9800C77E44 /* CFNetwork.framework in Frameworks */, + 27780C3219CF9CD100C77E44 /* Security.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C64EA534169E772200778456 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2003,6 +2532,7 @@ C6BA2C191705F4E6003F0E9E /* libMailCore-ios.a */, C6A81B911706840C00882C15 /* test-ios.app */, C6BD288D170BD71100A91AC1 /* MailCore.framework */, + 27780C3A19CF9CD100C77E44 /* MailCore-ios.framework */, ); name = Products; sourceTree = "<group>"; @@ -2328,6 +2858,8 @@ C64EA78E169F259200778456 /* Frameworks */ = { isa = PBXGroup; children = ( + 27780D3419CFA19500C77E44 /* libstdc++.dylib */, + 27780C3C19CF9D9800C77E44 /* CFNetwork.framework */, C6ED6D1C17A191BF00A4A14C /* Security.framework */, C6ED6D1917A1919500A4A14C /* Security.framework */, C6A81BB31706891B00882C15 /* CFNetwork.framework */, @@ -2582,7 +3114,548 @@ }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + 27780C4119CF9E1400C77E44 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 27780E3619CFA3F500C77E44 /* MCOPOPOperation+Private.h in Headers */, + 27780E4119CFA3F500C77E44 /* MCOSMTPOperation+Private.h in Headers */, + 27780E4519CFA3F500C77E44 /* MCONNTPOperation+Private.h in Headers */, + 27780E4E19CFA3F500C77E44 /* MCOAbstractMessage+Private.h in Headers */, + 27780E5219CFA3F600C77E44 /* MCOAbstractPart+Private.h in Headers */, + 27780E5419CFA3F600C77E44 /* MCOAddress+Private.h in Headers */, + 27780F2419CFA52800C77E44 /* MCOAttachment.h in Headers */, + 27780F2519CFA52800C77E44 /* MCOMessageBuilder.h in Headers */, + 27780F2619CFA52800C77E44 /* MCOMessageParser.h in Headers */, + 27780F2719CFA52800C77E44 /* MCOMessagePart.h in Headers */, + 27780F2819CFA52800C77E44 /* MCOMultipart.h in Headers */, + 27780F2919CFA52800C77E44 /* MCORFC822.h in Headers */, + 27780F2A19CFA52800C77E44 /* MCPOP.h in Headers */, + 27780F2B19CFA52800C77E44 /* MCPOPMessageInfo.h in Headers */, + 27780F2C19CFA52800C77E44 /* MCPOPProgressCallback.h in Headers */, + 27780F2D19CFA52800C77E44 /* MCPOPSession.h in Headers */, + 27780E3219CFA3F500C77E44 /* MCOFramework.h in Headers */, + 27780E3319CFA3F500C77E44 /* MCOPOP.h in Headers */, + 27780E3419CFA3F500C77E44 /* MCOPOPSession.h in Headers */, + 27780E3519CFA3F500C77E44 /* MCOPOPOperation.h in Headers */, + 27780E3719CFA3F500C77E44 /* MCOPOPFetchHeaderOperation.h in Headers */, + 27780E3819CFA3F500C77E44 /* MCOPOPFetchMessageOperation.h in Headers */, + 27780E3919CFA3F500C77E44 /* MCOPOPFetchMessagesOperation.h in Headers */, + 27780E3A19CFA3F500C77E44 /* MCOPOPNoopOperation.h in Headers */, + 27780E3B19CFA3F500C77E44 /* MCOPOPMessageInfo.h in Headers */, + 27780E3C19CFA3F500C77E44 /* MCOSMTP.h in Headers */, + 27780E3D19CFA3F500C77E44 /* MCOSMTPSession.h in Headers */, + 27780E3E19CFA3F500C77E44 /* MCOSMTPSendOperation.h in Headers */, + 27780E3F19CFA3F500C77E44 /* MCOSMTPNoopOperation.h in Headers */, + 27780E4019CFA3F500C77E44 /* MCOSMTPOperation.h in Headers */, + 27780E4219CFA3F500C77E44 /* MCONNTP.h in Headers */, + 27780E4319CFA3F500C77E44 /* MCONNTPSession.h in Headers */, + 27780E4419CFA3F500C77E44 /* MCONNTPOperation.h in Headers */, + 27780E4619CFA3F500C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */, + 27780E4719CFA3F500C77E44 /* MCONNTPFetchArticleOperation.h in Headers */, + 27780E4819CFA3F500C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */, + 27780E4919CFA3F500C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */, + 27780E4A19CFA3F500C77E44 /* MCONNTPDisconnectOperation.h in Headers */, + 27780E4B19CFA3F500C77E44 /* MCONNTPGroupInfo.h in Headers */, + 27780E4C19CFA3F500C77E44 /* MCOAbstract.h in Headers */, + 27780E4D19CFA3F500C77E44 /* MCOAbstractMessage.h in Headers */, + 27780E4F19CFA3F500C77E44 /* MCOAbstractMessagePart.h in Headers */, + 27780E5019CFA3F500C77E44 /* MCOAbstractMultipart.h in Headers */, + 27780E5119CFA3F600C77E44 /* MCOAbstractPart.h in Headers */, + 27780E5319CFA3F600C77E44 /* MCOAddress.h in Headers */, + 27780E5519CFA3F600C77E44 /* MCOConstants.h in Headers */, + 27780E5619CFA3F600C77E44 /* MCOMessageHeader.h in Headers */, + 27780E5819CFA3F600C77E44 /* MCOHTMLRendererDelegate.h in Headers */, + 27780E5919CFA3F600C77E44 /* MCOHTMLRendererIMAPDelegate.h in Headers */, + 27780E5A19CFA3F600C77E44 /* MCOAbstractMessageRendererCallback.h in Headers */, + 27780E5B19CFA3F600C77E44 /* MCOIMAP.h in Headers */, + 27780E5C19CFA3F600C77E44 /* MCOIMAPSession.h in Headers */, + 27780E5D19CFA3F600C77E44 /* MCOIMAPFolder.h in Headers */, + 27780E5E19CFA3F600C77E44 /* MCOIMAPMessage.h in Headers */, + 27780E5F19CFA3F600C77E44 /* MCOIMAPMessagePart.h in Headers */, + 27780E6019CFA3F600C77E44 /* MCOIMAPMultipart.h in Headers */, + 27780E6119CFA3F600C77E44 /* MCOIMAPNamespace.h in Headers */, + 27780E6219CFA3F600C77E44 /* MCOIMAPNamespaceItem.h in Headers */, + 27780E6319CFA3F600C77E44 /* MCOIMAPPart.h in Headers */, + 27780E6419CFA3F600C77E44 /* MCOIMAPFolderInfo.h in Headers */, + 27780E6519CFA3F700C77E44 /* MCOIMAPFetchFoldersOperation.h in Headers */, + 27780E6619CFA3F700C77E44 /* MCOIMAPOperation.h in Headers */, + 27780E6719CFA3F700C77E44 /* MCOIMAPFolderInfoOperation.h in Headers */, + 27780E6819CFA3F700C77E44 /* MCOIMAPBaseOperation.h in Headers */, + 27780E6A19CFA3F700C77E44 /* MCOIMAPAppendMessageOperation.h in Headers */, + 27780E6B19CFA3F700C77E44 /* MCOIMAPCopyMessagesOperation.h in Headers */, + 27780E6C19CFA3F700C77E44 /* MCOIMAPFetchMessagesOperation.h in Headers */, + 27780E6D19CFA3F700C77E44 /* MCOIMAPFetchContentOperation.h in Headers */, + 27780E6E19CFA3F700C77E44 /* MCOIMAPSearchOperation.h in Headers */, + 27780E6F19CFA3F700C77E44 /* MCOIMAPIdleOperation.h in Headers */, + 27780E7019CFA3F700C77E44 /* MCOIMAPFetchNamespaceOperation.h in Headers */, + 27780E7119CFA3F700C77E44 /* MCOIMAPIdentityOperation.h in Headers */, + 27780E7219CFA3F700C77E44 /* MCOIMAPCapabilityOperation.h in Headers */, + 27780E7319CFA3F700C77E44 /* MCOIMAPQuotaOperation.h in Headers */, + 27780E7419CFA3F800C77E44 /* MCOIMAPSearchExpression.h in Headers */, + 27780E7519CFA3F800C77E44 /* MCOIMAPFolderStatus.h in Headers */, + 27780E7619CFA3F800C77E44 /* MCOIMAPFolderStatusOperation.h in Headers */, + 27780E7719CFA3F800C77E44 /* MCOIMAPMessageRenderingOperation.h in Headers */, + 27780E7819CFA3F800C77E44 /* MCOIMAPNoopOperation.h in Headers */, + 27780E7919CFA3F800C77E44 /* MCOIMAPIdentity.h in Headers */, + 27780E7A19CFA3F800C77E44 /* MCOIMAPMultiDisconnectOperation.h in Headers */, + 27780E7B19CFA3F800C77E44 /* MCOObjectWrapper.h in Headers */, + 27780E7C19CFA3F800C77E44 /* MCOOperation.h in Headers */, + 27780E7E19CFA3F800C77E44 /* MCOUtils.h in Headers */, + 27780E7F19CFA3F900C77E44 /* NSArray+MCO.h in Headers */, + 27780E8019CFA3F900C77E44 /* NSData+MCO.h in Headers */, + 27780E8119CFA3F900C77E44 /* NSDictionary+MCO.h in Headers */, + 27780E8219CFA3F900C77E44 /* NSError+MCO.h in Headers */, + 27780E8319CFA3F900C77E44 /* NSObject+MCO.h in Headers */, + 27780E8419CFA3F900C77E44 /* NSString+MCO.h in Headers */, + 27780E8519CFA3F900C77E44 /* NSValue+MCO.h in Headers */, + 27780E8619CFA3F900C77E44 /* MCOIndexSet.h in Headers */, + 27780E8819CFA3F900C77E44 /* MCORange.h in Headers */, + 27780E8919CFA3FA00C77E44 /* NSIndexSet+MCO.h in Headers */, + 27780E8A19CFA3FA00C77E44 /* NSSet+MCO.h in Headers */, + 27780E8B19CFA3FA00C77E44 /* MCOMailProvider.h in Headers */, + 27780E8C19CFA3FA00C77E44 /* MCOMailProvidersManager.h in Headers */, + 27780E8D19CFA3FA00C77E44 /* MCONetService.h in Headers */, + 27780E8E19CFA3FA00C77E44 /* MCOProvider.h in Headers */, + 27780E8F19CFA3FA00C77E44 /* MCObjC.h in Headers */, + 27780E9019CFA3FA00C77E44 /* MCAsyncIMAP.h in Headers */, + 27780E9119CFA3FA00C77E44 /* MCIMAPAsyncConnection.h in Headers */, + 27780E9219CFA3FB00C77E44 /* MCIMAPAsyncSession.h in Headers */, + 27780E9319CFA3FB00C77E44 /* MCIMAPOperation.h in Headers */, + 27780E9419CFA3FB00C77E44 /* MCIMAPOperationCallback.h in Headers */, + 27780E9519CFA3FB00C77E44 /* MCIMAPCheckAccountOperation.h in Headers */, + 27780E9619CFA3FB00C77E44 /* MCIMAPConnectOperation.h in Headers */, + 27780E9719CFA3FB00C77E44 /* MCIMAPFetchFoldersOperation.h in Headers */, + 27780E9819CFA3FB00C77E44 /* MCIMAPRenameFolderOperation.h in Headers */, + 27780E9919CFA3FB00C77E44 /* MCIMAPDeleteFolderOperation.h in Headers */, + 27780E9A19CFA3FC00C77E44 /* MCIMAPCreateFolderOperation.h in Headers */, + 27780E9B19CFA3FC00C77E44 /* MCIMAPSubscribeFolderOperation.h in Headers */, + 27780E9C19CFA3FC00C77E44 /* MCIMAPAppendMessageOperation.h in Headers */, + 27780E9D19CFA3FC00C77E44 /* MCIMAPCopyMessagesOperation.h in Headers */, + 27780E9E19CFA3FC00C77E44 /* MCIMAPExpungeOperation.h in Headers */, + 27780E9F19CFA3FC00C77E44 /* MCIMAPFetchMessagesOperation.h in Headers */, + 27780EA019CFA3FC00C77E44 /* MCIMAPFetchContentOperation.h in Headers */, + 27780EA119CFA3FC00C77E44 /* MCIMAPStoreFlagsOperation.h in Headers */, + 27780EA219CFA3FD00C77E44 /* MCIMAPStoreLabelsOperation.h in Headers */, + 27780EA319CFA3FD00C77E44 /* MCIMAPSearchOperation.h in Headers */, + 27780EA419CFA3FD00C77E44 /* MCIMAPIdleOperation.h in Headers */, + 27780EA519CFA3FD00C77E44 /* MCIMAPFetchNamespaceOperation.h in Headers */, + 27780EA619CFA3FD00C77E44 /* MCIMAPIdentityOperation.h in Headers */, + 27780EA719CFA3FD00C77E44 /* MCIMAPFolderInfoOperation.h in Headers */, + 27780EA819CFA3FD00C77E44 /* MCIMAPCapabilityOperation.h in Headers */, + 27780EA919CFA3FE00C77E44 /* MCIMAPQuotaOperation.h in Headers */, + 27780EAA19CFA3FE00C77E44 /* MCIMAPFolderStatusOperation.h in Headers */, + 27780EAB19CFA3FE00C77E44 /* MCIMAPDisconnectOperation.h in Headers */, + 27780EAC19CFA3FE00C77E44 /* MCIMAPMessageRenderingOperation.h in Headers */, + 27780EAD19CFA3FE00C77E44 /* MCIMAPNoopOperation.h in Headers */, + 27780EAE19CFA3FE00C77E44 /* MCIMAPMultiDisconnectOperation.h in Headers */, + 27780EAF19CFA3FE00C77E44 /* MCAsyncPOP.h in Headers */, + 27780EB019CFA3FF00C77E44 /* MCPOPAsyncSession.h in Headers */, + 27780EB119CFA3FF00C77E44 /* MCPOPFetchHeaderOperation.h in Headers */, + 27780EB219CFA3FF00C77E44 /* MCPOPFetchMessageOperation.h in Headers */, + 27780EB319CFA3FF00C77E44 /* MCPOPDeleteMessagesOperation.h in Headers */, + 27780EB419CFA3FF00C77E44 /* MCPOPFetchMessagesOperation.h in Headers */, + 27780EB519CFA3FF00C77E44 /* MCPOPCheckAccountOperation.h in Headers */, + 27780EB619CFA40000C77E44 /* MCPOPNoopOperation.h in Headers */, + 27780EB719CFA40000C77E44 /* MCPOPOperation.h in Headers */, + 27780EB819CFA40000C77E44 /* MCPOPOperationCallback.h in Headers */, + 27780EB919CFA40000C77E44 /* MCAsyncNNTP.h in Headers */, + 27780EBA19CFA40000C77E44 /* MCNNTPAsyncSession.h in Headers */, + 27780EBB19CFA40000C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */, + 27780EBC19CFA40100C77E44 /* MCNNTPFetchArticleOperation.h in Headers */, + 27780EBD19CFA40100C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */, + 27780EBE19CFA40100C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */, + 27780EBF19CFA40100C77E44 /* MCNNTPCheckAccountOperation.h in Headers */, + 27780EC019CFA40100C77E44 /* MCNNTPDisconnectOperation.h in Headers */, + 27780EC119CFA40200C77E44 /* MCNNTPOperation.h in Headers */, + 27780EC219CFA40200C77E44 /* MCNNTPOperationCallback.h in Headers */, + 27780EC319CFA40200C77E44 /* MCAsyncSMTP.h in Headers */, + 27780EC419CFA40200C77E44 /* MCSMTPAsyncSession.h in Headers */, + 27780EC519CFA40200C77E44 /* MCSMTPSendWithDataOperation.h in Headers */, + 27780EC619CFA40200C77E44 /* MCSMTPDisconnectOperation.h in Headers */, + 27780EC719CFA40300C77E44 /* MCSMTPNoopOperation.h in Headers */, + 27780EC819CFA40300C77E44 /* MCSMTPOperation.h in Headers */, + 27780EC919CFA40300C77E44 /* MCSMTPOperationCallback.h in Headers */, + 27780ECA19CFA40300C77E44 /* MCSMTPCheckAccountOperation.h in Headers */, + 27780ECB19CFA40300C77E44 /* MCAsync.h in Headers */, + 27780ECC19CFA40400C77E44 /* MCCertificateUtils.h in Headers */, + 27780ECD19CFA40400C77E44 /* MCZip.h in Headers */, + 27780ECE19CFA40400C77E44 /* ioapi.h in Headers */, + 27780ECF19CFA40400C77E44 /* mztools.h in Headers */, + 27780ED019CFA40400C77E44 /* unzip.h in Headers */, + 27780ED119CFA40500C77E44 /* zip.h in Headers */, + 27780ED219CFA40500C77E44 /* MCAbstract.h in Headers */, + 27780ED319CFA40500C77E44 /* MCAbstractMessage.h in Headers */, + 27780ED419CFA40500C77E44 /* MCAbstractMessagePart.h in Headers */, + 27780ED519CFA40500C77E44 /* MCAbstractMultipart.h in Headers */, + 27780ED619CFA40600C77E44 /* MCAbstractPart.h in Headers */, + 27780ED719CFA40600C77E44 /* MCAddress.h in Headers */, + 27780ED819CFA40600C77E44 /* MCMessageConstants.h in Headers */, + 27780ED919CFA40600C77E44 /* MCMessageHeader.h in Headers */, + 27780EDA19CFA40600C77E44 /* MCArray.h in Headers */, + 27780EDB19CFA40700C77E44 /* MCAssert.h in Headers */, + 27780EDC19CFA40700C77E44 /* MCAutoreleasePool.h in Headers */, + 27780EDD19CFA40700C77E44 /* MCBase64.h in Headers */, + 27780EDE19CFA40700C77E44 /* MCBaseTypes.h in Headers */, + 27780EDF19CFA40800C77E44 /* MCConnectionLogger.h in Headers */, + 27780EE019CFA40800C77E44 /* MCConnectionLoggerUtils.h in Headers */, + 27780EE119CFA40800C77E44 /* MCData.h in Headers */, + 27780EE219CFA40800C77E44 /* MCHash.h in Headers */, + 27780EE319CFA40900C77E44 /* MCHashMap.h in Headers */, + 27780EE419CFA40900C77E44 /* MCHTMLCleaner.h in Headers */, + 27780EE519CFA40900C77E44 /* MCICUTypes.h in Headers */, + 27780EE619CFA40900C77E44 /* MCIndexSet.h in Headers */, + 27780EE719CFA40900C77E44 /* MCIterator.h in Headers */, + 27780EE819CFA40A00C77E44 /* MCJSON.h in Headers */, + 27780EE919CFA40A00C77E44 /* MCJSONParser.h in Headers */, + 27780EEA19CFA40A00C77E44 /* MCLibetpan.h in Headers */, + 27780EEB19CFA40A00C77E44 /* MCLibetpanTypes.h in Headers */, + 27780EEC19CFA40B00C77E44 /* MCLog.h in Headers */, + 27780EED19CFA40B00C77E44 /* MCMainThread.h in Headers */, + 27780EEE19CFA40B00C77E44 /* MCMD5.h in Headers */, + 27780EEF19CFA40B00C77E44 /* MCNull.h in Headers */, + 27780EF019CFA40C00C77E44 /* MCObject.h in Headers */, + 27780EF119CFA40C00C77E44 /* MCOperation.h in Headers */, + 27780EF219CFA40C00C77E44 /* MCOperationCallback.h in Headers */, + 27780EF319CFA40C00C77E44 /* MCOperationQueue.h in Headers */, + 27780EF419CFA40D00C77E44 /* MCOperationQueueCallback.h in Headers */, + 27780EF519CFA40D00C77E44 /* MCRange.h in Headers */, + 27780EF619CFA40D00C77E44 /* MCSet.h in Headers */, + 27780EF719CFA40D00C77E44 /* MCString.h in Headers */, + 27780EF819CFA40E00C77E44 /* MCUtils.h in Headers */, + 27780EF919CFA40E00C77E44 /* MCValue.h in Headers */, + 27780EFB19CFA40E00C77E44 /* MCIMAP.h in Headers */, + 27780EFC19CFA40F00C77E44 /* MCIMAPFolder.h in Headers */, + 27780EFD19CFA40F00C77E44 /* MCIMAPMessage.h in Headers */, + 27780EFE19CFA40F00C77E44 /* MCIMAPMessagePart.h in Headers */, + 27780EFF19CFA41000C77E44 /* MCIMAPMultipart.h in Headers */, + 27780F0019CFA41000C77E44 /* MCIMAPNamespace.h in Headers */, + 27780F0119CFA41000C77E44 /* MCIMAPNamespaceItem.h in Headers */, + 27780F0219CFA41000C77E44 /* MCIMAPPart.h in Headers */, + 27780F0319CFA41100C77E44 /* MCIMAPProgressCallback.h in Headers */, + 27780F0419CFA41100C77E44 /* MCIMAPSearchExpression.h in Headers */, + 27780F0519CFA41100C77E44 /* MCIMAPSession.h in Headers */, + 27780F0619CFA41200C77E44 /* MCIMAPSyncResult.h in Headers */, + 27780F0719CFA41200C77E44 /* MCIMAPFolderStatus.h in Headers */, + 27780F0819CFA41200C77E44 /* MCIMAPIdentity.h in Headers */, + 27780F0919CFA41200C77E44 /* MCNNTP.h in Headers */, + 27780F0A19CFA41300C77E44 /* MCNNTPGroupInfo.h in Headers */, + 27780F0B19CFA41300C77E44 /* MCNNTPProgressCallback.h in Headers */, + 27780F0C19CFA41300C77E44 /* MCNNTPSession.h in Headers */, + 27780F0D19CFA41400C77E44 /* MCAddressDisplay.h in Headers */, + 27780F0E19CFA41400C77E44 /* MCDateFormatter.h in Headers */, + 27780F0F19CFA41400C77E44 /* MCSizeFormatter.h in Headers */, + 27780F1019CFA41400C77E44 /* MCHTMLRenderer.h in Headers */, + 27780F1119CFA41500C77E44 /* MCHTMLRendererCallback.h in Headers */, + 27780F1219CFA41500C77E44 /* MCRenderer.h in Headers */, + 27780F1319CFA41500C77E44 /* MCHTMLBodyRendererTemplateCallback.h in Headers */, + 27780F1419CFA41600C77E44 /* MCHTMLRendererIMAPDataCallback.h in Headers */, + 27780F1519CFA41600C77E44 /* MCAttachment.h in Headers */, + 27780F1619CFA41600C77E44 /* MCMessageBuilder.h in Headers */, + 27780F1719CFA41700C77E44 /* MCMessageParser.h in Headers */, + 27780F1819CFA41700C77E44 /* MCMessagePart.h in Headers */, + 27780F1919CFA41700C77E44 /* MCMultipart.h in Headers */, + 27780F1A19CFA41800C77E44 /* MCRFC822.h in Headers */, + 27780F1B19CFA41800C77E44 /* MCSMTP.h in Headers */, + 27780F1C19CFA41800C77E44 /* MCSMTPProgressCallback.h in Headers */, + 27780F1D19CFA41900C77E44 /* MCSMTPSession.h in Headers */, + 27780F1E19CFA41900C77E44 /* MCMailProvider.h in Headers */, + 27780F1F19CFA41900C77E44 /* MCMailProvidersManager.h in Headers */, + 27780F2019CFA41A00C77E44 /* MCNetService.h in Headers */, + 27780F2119CFA41A00C77E44 /* MCProvider.h in Headers */, + 27780F2219CFA41A00C77E44 /* MCCore.h in Headers */, + 27780F2319CFA41B00C77E44 /* MailCore.h in Headers */, + 27780E5719CFA3F600C77E44 /* MCOMessageHeader+Private.h in Headers */, + 27780E6919CFA3F700C77E44 /* MCOIMAPBaseOperation+Private.h in Headers */, + 27780E7D19CFA3F800C77E44 /* MCOOperation+Private.h in Headers */, + 27780E8719CFA3F900C77E44 /* MCOIndexSet+Private.h in Headers */, + 27780EFA19CFA40E00C77E44 /* MCValuePrivate.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 27780D3319CF9FA300C77E44 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 27780E2A19CFA39900C77E44 /* MCAsyncSMTP.h in Headers */, + 27780E2B19CFA39900C77E44 /* MCSMTPAsyncSession.h in Headers */, + 27780E2C19CFA39900C77E44 /* MCSMTPSendWithDataOperation.h in Headers */, + 27780E2D19CFA39900C77E44 /* MCSMTPDisconnectOperation.h in Headers */, + 27780E2E19CFA39900C77E44 /* MCSMTPNoopOperation.h in Headers */, + 27780E2F19CFA39900C77E44 /* MCSMTPOperation.h in Headers */, + 27780E3019CFA39900C77E44 /* MCSMTPOperationCallback.h in Headers */, + 27780E3119CFA39900C77E44 /* MCSMTPCheckAccountOperation.h in Headers */, + 27780D3619CFA32900C77E44 /* MCOFramework.h in Headers */, + 27780D3719CFA32900C77E44 /* MCOPOP.h in Headers */, + 27780D3819CFA32900C77E44 /* MCOPOPSession.h in Headers */, + 27780D3919CFA32900C77E44 /* MCOPOPOperation.h in Headers */, + 27780D3B19CFA32900C77E44 /* MCOPOPFetchHeaderOperation.h in Headers */, + 27780D3C19CFA32900C77E44 /* MCOPOPFetchMessageOperation.h in Headers */, + 27780D3D19CFA32900C77E44 /* MCOPOPFetchMessagesOperation.h in Headers */, + 27780D3E19CFA32900C77E44 /* MCOPOPNoopOperation.h in Headers */, + 27780D3F19CFA32900C77E44 /* MCOPOPMessageInfo.h in Headers */, + 27780D4019CFA32900C77E44 /* MCOSMTP.h in Headers */, + 27780D4119CFA32900C77E44 /* MCOSMTPSession.h in Headers */, + 27780D4219CFA32900C77E44 /* MCOSMTPSendOperation.h in Headers */, + 27780D4319CFA32900C77E44 /* MCOSMTPNoopOperation.h in Headers */, + 27780D4419CFA32900C77E44 /* MCOSMTPOperation.h in Headers */, + 27780D4619CFA32900C77E44 /* MCONNTP.h in Headers */, + 27780D4719CFA32900C77E44 /* MCONNTPSession.h in Headers */, + 27780D4819CFA32900C77E44 /* MCONNTPOperation.h in Headers */, + 27780D4A19CFA32900C77E44 /* MCONNTPFetchHeaderOperation.h in Headers */, + 27780D4B19CFA32900C77E44 /* MCONNTPFetchArticleOperation.h in Headers */, + 27780D4C19CFA32900C77E44 /* MCONNTPListNewsgroupsOperation.h in Headers */, + 27780D4D19CFA32900C77E44 /* MCONNTPFetchArticlesOperation.h in Headers */, + 27780D4E19CFA32900C77E44 /* MCONNTPDisconnectOperation.h in Headers */, + 27780D4F19CFA32900C77E44 /* MCONNTPGroupInfo.h in Headers */, + 27780D5019CFA32900C77E44 /* MCOAbstract.h in Headers */, + 27780D5119CFA32900C77E44 /* MCOAbstractMessage.h in Headers */, + 27780D5319CFA32900C77E44 /* MCOAbstractMessagePart.h in Headers */, + 27780D5419CFA32900C77E44 /* MCOAbstractMultipart.h in Headers */, + 27780D5519CFA32900C77E44 /* MCOAbstractPart.h in Headers */, + 27780D5719CFA32A00C77E44 /* MCOAddress.h in Headers */, + 27780D5919CFA32A00C77E44 /* MCOConstants.h in Headers */, + 27780D5A19CFA32A00C77E44 /* MCOMessageHeader.h in Headers */, + 27780D5C19CFA32A00C77E44 /* MCOHTMLRendererDelegate.h in Headers */, + 27780D5D19CFA32A00C77E44 /* MCOHTMLRendererIMAPDelegate.h in Headers */, + 27780D5E19CFA32A00C77E44 /* MCOAbstractMessageRendererCallback.h in Headers */, + 27780D5F19CFA32A00C77E44 /* MCOIMAP.h in Headers */, + 27780D6019CFA32A00C77E44 /* MCOIMAPSession.h in Headers */, + 27780D6119CFA32A00C77E44 /* MCOIMAPFolder.h in Headers */, + 27780D6219CFA32A00C77E44 /* MCOIMAPMessage.h in Headers */, + 27780D6319CFA32A00C77E44 /* MCOIMAPMessagePart.h in Headers */, + 27780D6419CFA32A00C77E44 /* MCOIMAPMultipart.h in Headers */, + 27780D6519CFA32A00C77E44 /* MCOIMAPNamespace.h in Headers */, + 27780D6619CFA32A00C77E44 /* MCOIMAPNamespaceItem.h in Headers */, + 27780D6719CFA32A00C77E44 /* MCOIMAPPart.h in Headers */, + 27780D6819CFA32A00C77E44 /* MCOIMAPFolderInfo.h in Headers */, + 27780D6919CFA32A00C77E44 /* MCOIMAPFetchFoldersOperation.h in Headers */, + 27780D6A19CFA32A00C77E44 /* MCOIMAPOperation.h in Headers */, + 27780D6B19CFA32B00C77E44 /* MCOIMAPFolderInfoOperation.h in Headers */, + 27780D6C19CFA32B00C77E44 /* MCOIMAPBaseOperation.h in Headers */, + 27780D6E19CFA32B00C77E44 /* MCOIMAPAppendMessageOperation.h in Headers */, + 27780D6F19CFA32B00C77E44 /* MCOIMAPCopyMessagesOperation.h in Headers */, + 27780D7019CFA32B00C77E44 /* MCOIMAPFetchMessagesOperation.h in Headers */, + 27780D7119CFA32B00C77E44 /* MCOIMAPFetchContentOperation.h in Headers */, + 27780D7219CFA32B00C77E44 /* MCOIMAPSearchOperation.h in Headers */, + 27780D7319CFA32B00C77E44 /* MCOIMAPIdleOperation.h in Headers */, + 27780D7419CFA32B00C77E44 /* MCOIMAPFetchNamespaceOperation.h in Headers */, + 27780D7519CFA32B00C77E44 /* MCOIMAPIdentityOperation.h in Headers */, + 27780D7619CFA32B00C77E44 /* MCOIMAPCapabilityOperation.h in Headers */, + 27780D7719CFA32B00C77E44 /* MCOIMAPQuotaOperation.h in Headers */, + 27780D7819CFA32B00C77E44 /* MCOIMAPSearchExpression.h in Headers */, + 27780D7919CFA32C00C77E44 /* MCOIMAPFolderStatus.h in Headers */, + 27780D7A19CFA32C00C77E44 /* MCOIMAPFolderStatusOperation.h in Headers */, + 27780D7B19CFA32C00C77E44 /* MCOIMAPMessageRenderingOperation.h in Headers */, + 27780D7C19CFA32C00C77E44 /* MCOIMAPNoopOperation.h in Headers */, + 27780D7D19CFA32C00C77E44 /* MCOIMAPIdentity.h in Headers */, + 27780D7E19CFA32C00C77E44 /* MCOIMAPMultiDisconnectOperation.h in Headers */, + 27780D7F19CFA32C00C77E44 /* MCOAttachment.h in Headers */, + 27780D8019CFA32C00C77E44 /* MCOMessageBuilder.h in Headers */, + 27780D8119CFA32C00C77E44 /* MCOMessageParser.h in Headers */, + 27780D8219CFA32C00C77E44 /* MCOMessagePart.h in Headers */, + 27780D8319CFA32C00C77E44 /* MCOMultipart.h in Headers */, + 27780D8419CFA32D00C77E44 /* MCORFC822.h in Headers */, + 27780D8519CFA32D00C77E44 /* MCOObjectWrapper.h in Headers */, + 27780D8619CFA32D00C77E44 /* MCOOperation.h in Headers */, + 27780D8819CFA32D00C77E44 /* MCOUtils.h in Headers */, + 27780D8919CFA32D00C77E44 /* NSArray+MCO.h in Headers */, + 27780D8A19CFA32D00C77E44 /* NSData+MCO.h in Headers */, + 27780D8B19CFA32D00C77E44 /* NSDictionary+MCO.h in Headers */, + 27780D8C19CFA32D00C77E44 /* NSError+MCO.h in Headers */, + 27780D8D19CFA32D00C77E44 /* NSObject+MCO.h in Headers */, + 27780D8E19CFA32E00C77E44 /* NSString+MCO.h in Headers */, + 27780D8F19CFA32E00C77E44 /* NSValue+MCO.h in Headers */, + 27780D9019CFA32E00C77E44 /* MCOIndexSet.h in Headers */, + 27780D9219CFA32E00C77E44 /* MCORange.h in Headers */, + 27780D9319CFA32E00C77E44 /* NSIndexSet+MCO.h in Headers */, + 27780D9419CFA32E00C77E44 /* NSSet+MCO.h in Headers */, + 27780D9519CFA32E00C77E44 /* MCOMailProvider.h in Headers */, + 27780D9619CFA32E00C77E44 /* MCOMailProvidersManager.h in Headers */, + 27780D9719CFA32F00C77E44 /* MCONetService.h in Headers */, + 27780D9819CFA32F00C77E44 /* MCOProvider.h in Headers */, + 27780D9919CFA32F00C77E44 /* MCObjC.h in Headers */, + 27780D9A19CFA32F00C77E44 /* MCAsyncIMAP.h in Headers */, + 27780D9B19CFA32F00C77E44 /* MCIMAPAsyncConnection.h in Headers */, + 27780D9C19CFA32F00C77E44 /* MCIMAPAsyncSession.h in Headers */, + 27780D9D19CFA32F00C77E44 /* MCIMAPOperation.h in Headers */, + 27780D9E19CFA32F00C77E44 /* MCIMAPOperationCallback.h in Headers */, + 27780D9F19CFA33000C77E44 /* MCIMAPCheckAccountOperation.h in Headers */, + 27780DA019CFA33000C77E44 /* MCIMAPConnectOperation.h in Headers */, + 27780DA119CFA33000C77E44 /* MCIMAPFetchFoldersOperation.h in Headers */, + 27780DA219CFA33000C77E44 /* MCIMAPRenameFolderOperation.h in Headers */, + 27780DA319CFA33000C77E44 /* MCIMAPDeleteFolderOperation.h in Headers */, + 27780DA419CFA33000C77E44 /* MCIMAPCreateFolderOperation.h in Headers */, + 27780DA519CFA33000C77E44 /* MCIMAPSubscribeFolderOperation.h in Headers */, + 27780DA619CFA33100C77E44 /* MCIMAPAppendMessageOperation.h in Headers */, + 27780DA719CFA33100C77E44 /* MCIMAPCopyMessagesOperation.h in Headers */, + 27780DA819CFA33100C77E44 /* MCIMAPExpungeOperation.h in Headers */, + 27780DA919CFA33100C77E44 /* MCIMAPFetchMessagesOperation.h in Headers */, + 27780DAA19CFA33100C77E44 /* MCIMAPFetchContentOperation.h in Headers */, + 27780DAB19CFA33100C77E44 /* MCIMAPStoreFlagsOperation.h in Headers */, + 27780DAC19CFA33100C77E44 /* MCIMAPStoreLabelsOperation.h in Headers */, + 27780DAD19CFA33200C77E44 /* MCIMAPSearchOperation.h in Headers */, + 27780DAE19CFA33200C77E44 /* MCIMAPIdleOperation.h in Headers */, + 27780DAF19CFA33200C77E44 /* MCIMAPFetchNamespaceOperation.h in Headers */, + 27780DB019CFA33200C77E44 /* MCIMAPIdentityOperation.h in Headers */, + 27780DB119CFA33200C77E44 /* MCIMAPFolderInfoOperation.h in Headers */, + 27780DB219CFA33200C77E44 /* MCIMAPCapabilityOperation.h in Headers */, + 27780DB319CFA33200C77E44 /* MCIMAPQuotaOperation.h in Headers */, + 27780DB419CFA33300C77E44 /* MCIMAPFolderStatusOperation.h in Headers */, + 27780DB519CFA33300C77E44 /* MCIMAPDisconnectOperation.h in Headers */, + 27780DB619CFA33300C77E44 /* MCIMAPMessageRenderingOperation.h in Headers */, + 27780DB719CFA33300C77E44 /* MCIMAPNoopOperation.h in Headers */, + 27780DB819CFA33300C77E44 /* MCIMAPMultiDisconnectOperation.h in Headers */, + 27780DB919CFA33300C77E44 /* MCAsyncPOP.h in Headers */, + 27780DBA19CFA33400C77E44 /* MCPOPAsyncSession.h in Headers */, + 27780DBB19CFA33400C77E44 /* MCPOPFetchHeaderOperation.h in Headers */, + 27780DBC19CFA33400C77E44 /* MCPOPFetchMessageOperation.h in Headers */, + 27780DBD19CFA33400C77E44 /* MCPOPDeleteMessagesOperation.h in Headers */, + 27780DBE19CFA33400C77E44 /* MCPOPFetchMessagesOperation.h in Headers */, + 27780DBF19CFA33400C77E44 /* MCPOPCheckAccountOperation.h in Headers */, + 27780DC019CFA33500C77E44 /* MCPOPNoopOperation.h in Headers */, + 27780DC119CFA33500C77E44 /* MCPOPOperation.h in Headers */, + 27780DC219CFA33500C77E44 /* MCPOPOperationCallback.h in Headers */, + 27780DC319CFA33500C77E44 /* MCAsyncNNTP.h in Headers */, + 27780DC419CFA33500C77E44 /* MCNNTPAsyncSession.h in Headers */, + 27780DC519CFA33500C77E44 /* MCNNTPFetchHeaderOperation.h in Headers */, + 27780DC619CFA33600C77E44 /* MCNNTPFetchArticleOperation.h in Headers */, + 27780DC719CFA33600C77E44 /* MCNNTPListNewsgroupsOperation.h in Headers */, + 27780DC819CFA33600C77E44 /* MCNNTPFetchArticlesOperation.h in Headers */, + 27780DC919CFA33600C77E44 /* MCNNTPCheckAccountOperation.h in Headers */, + 27780DCA19CFA33600C77E44 /* MCNNTPDisconnectOperation.h in Headers */, + 27780DCB19CFA33700C77E44 /* MCNNTPOperation.h in Headers */, + 27780DCC19CFA33700C77E44 /* MCNNTPOperationCallback.h in Headers */, + 27780DCD19CFA33700C77E44 /* MCAsync.h in Headers */, + 27780DCE19CFA33700C77E44 /* MCCertificateUtils.h in Headers */, + 27780DCF19CFA33700C77E44 /* MCZip.h in Headers */, + 27780DD019CFA33800C77E44 /* ioapi.h in Headers */, + 27780DD119CFA33800C77E44 /* mztools.h in Headers */, + 27780DD219CFA33800C77E44 /* unzip.h in Headers */, + 27780DD319CFA33800C77E44 /* zip.h in Headers */, + 27780DD419CFA33800C77E44 /* MCAbstract.h in Headers */, + 27780DD519CFA33900C77E44 /* MCAbstractMessage.h in Headers */, + 27780DD619CFA33900C77E44 /* MCAbstractMessagePart.h in Headers */, + 27780DD719CFA33900C77E44 /* MCAbstractMultipart.h in Headers */, + 27780DD819CFA33900C77E44 /* MCAbstractPart.h in Headers */, + 27780DD919CFA33900C77E44 /* MCAddress.h in Headers */, + 27780DDA19CFA33A00C77E44 /* MCMessageConstants.h in Headers */, + 27780DDB19CFA33A00C77E44 /* MCMessageHeader.h in Headers */, + 27780DDC19CFA33A00C77E44 /* MCArray.h in Headers */, + 27780DDD19CFA33A00C77E44 /* MCAssert.h in Headers */, + 27780DDE19CFA33A00C77E44 /* MCAutoreleasePool.h in Headers */, + 27780DDF19CFA33B00C77E44 /* MCBase64.h in Headers */, + 27780DE019CFA33B00C77E44 /* MCBaseTypes.h in Headers */, + 27780DE119CFA33B00C77E44 /* MCConnectionLogger.h in Headers */, + 27780DE219CFA33B00C77E44 /* MCConnectionLoggerUtils.h in Headers */, + 27780DE319CFA33B00C77E44 /* MCData.h in Headers */, + 27780DE419CFA33C00C77E44 /* MCHash.h in Headers */, + 27780DE519CFA33C00C77E44 /* MCHashMap.h in Headers */, + 27780DE619CFA33C00C77E44 /* MCHTMLCleaner.h in Headers */, + 27780DE719CFA33C00C77E44 /* MCICUTypes.h in Headers */, + 27780DE819CFA33D00C77E44 /* MCIndexSet.h in Headers */, + 27780DE919CFA33D00C77E44 /* MCIterator.h in Headers */, + 27780DEA19CFA33D00C77E44 /* MCJSON.h in Headers */, + 27780DEB19CFA33D00C77E44 /* MCJSONParser.h in Headers */, + 27780DEC19CFA33E00C77E44 /* MCLibetpan.h in Headers */, + 27780DED19CFA33E00C77E44 /* MCLibetpanTypes.h in Headers */, + 27780DEE19CFA33E00C77E44 /* MCLog.h in Headers */, + 27780DEF19CFA33E00C77E44 /* MCMainThread.h in Headers */, + 27780DF019CFA33F00C77E44 /* MCMD5.h in Headers */, + 27780DF119CFA33F00C77E44 /* MCNull.h in Headers */, + 27780DF219CFA33F00C77E44 /* MCObject.h in Headers */, + 27780DF319CFA33F00C77E44 /* MCOperation.h in Headers */, + 27780DF419CFA33F00C77E44 /* MCOperationCallback.h in Headers */, + 27780DF519CFA34000C77E44 /* MCOperationQueue.h in Headers */, + 27780DF619CFA34000C77E44 /* MCOperationQueueCallback.h in Headers */, + 27780DF719CFA34000C77E44 /* MCRange.h in Headers */, + 27780DF819CFA34000C77E44 /* MCSet.h in Headers */, + 27780DF919CFA34100C77E44 /* MCString.h in Headers */, + 27780DFA19CFA34100C77E44 /* MCUtils.h in Headers */, + 27780DFB19CFA34100C77E44 /* MCValue.h in Headers */, + 27780DFD19CFA34200C77E44 /* MCIMAP.h in Headers */, + 27780DFE19CFA34200C77E44 /* MCIMAPFolder.h in Headers */, + 27780DFF19CFA34200C77E44 /* MCIMAPMessage.h in Headers */, + 27780E0019CFA34300C77E44 /* MCIMAPMessagePart.h in Headers */, + 27780E0119CFA34300C77E44 /* MCIMAPMultipart.h in Headers */, + 27780E0219CFA34300C77E44 /* MCIMAPNamespace.h in Headers */, + 27780E0319CFA34300C77E44 /* MCIMAPNamespaceItem.h in Headers */, + 27780E0419CFA34400C77E44 /* MCIMAPPart.h in Headers */, + 27780E0519CFA34400C77E44 /* MCIMAPProgressCallback.h in Headers */, + 27780E0619CFA34400C77E44 /* MCIMAPSearchExpression.h in Headers */, + 27780E0719CFA34500C77E44 /* MCIMAPSession.h in Headers */, + 27780E0819CFA34500C77E44 /* MCIMAPSyncResult.h in Headers */, + 27780E0919CFA34500C77E44 /* MCIMAPFolderStatus.h in Headers */, + 27780E0A19CFA34500C77E44 /* MCIMAPIdentity.h in Headers */, + 27780E0B19CFA34600C77E44 /* MCPOP.h in Headers */, + 27780E0C19CFA34600C77E44 /* MCPOPMessageInfo.h in Headers */, + 27780E0D19CFA34600C77E44 /* MCPOPProgressCallback.h in Headers */, + 27780E0E19CFA34600C77E44 /* MCPOPSession.h in Headers */, + 27780E0F19CFA34700C77E44 /* MCNNTP.h in Headers */, + 27780E1019CFA34700C77E44 /* MCNNTPGroupInfo.h in Headers */, + 27780E1119CFA34700C77E44 /* MCNNTPProgressCallback.h in Headers */, + 27780E1219CFA34800C77E44 /* MCNNTPSession.h in Headers */, + 27780E1319CFA34800C77E44 /* MCAddressDisplay.h in Headers */, + 27780E1419CFA34800C77E44 /* MCDateFormatter.h in Headers */, + 27780E1519CFA34800C77E44 /* MCSizeFormatter.h in Headers */, + 27780E1619CFA34900C77E44 /* MCHTMLRenderer.h in Headers */, + 27780E1719CFA34900C77E44 /* MCHTMLRendererCallback.h in Headers */, + 27780E1819CFA34900C77E44 /* MCRenderer.h in Headers */, + 27780E1919CFA34A00C77E44 /* MCHTMLBodyRendererTemplateCallback.h in Headers */, + 27780E1A19CFA34A00C77E44 /* MCHTMLRendererIMAPDataCallback.h in Headers */, + 27780E1B19CFA34A00C77E44 /* MCAttachment.h in Headers */, + 27780E1C19CFA34B00C77E44 /* MCMessageBuilder.h in Headers */, + 27780E1D19CFA34B00C77E44 /* MCMessageParser.h in Headers */, + 27780E1E19CFA34B00C77E44 /* MCMessagePart.h in Headers */, + 27780E1F19CFA34C00C77E44 /* MCMultipart.h in Headers */, + 27780E2019CFA34C00C77E44 /* MCRFC822.h in Headers */, + 27780E2119CFA34C00C77E44 /* MCSMTP.h in Headers */, + 27780E2219CFA34C00C77E44 /* MCSMTPProgressCallback.h in Headers */, + 27780E2319CFA34D00C77E44 /* MCSMTPSession.h in Headers */, + 27780E2419CFA34D00C77E44 /* MCMailProvider.h in Headers */, + 27780E2519CFA34D00C77E44 /* MCMailProvidersManager.h in Headers */, + 27780E2619CFA34E00C77E44 /* MCNetService.h in Headers */, + 27780E2719CFA34E00C77E44 /* MCProvider.h in Headers */, + 27780E2819CFA34E00C77E44 /* MCCore.h in Headers */, + 27780E2919CFA34F00C77E44 /* MailCore.h in Headers */, + 27780D3A19CFA32900C77E44 /* MCOPOPOperation+Private.h in Headers */, + 27780D4519CFA32900C77E44 /* MCOSMTPOperation+Private.h in Headers */, + 27780D4919CFA32900C77E44 /* MCONNTPOperation+Private.h in Headers */, + 27780D5219CFA32900C77E44 /* MCOAbstractMessage+Private.h in Headers */, + 27780D5619CFA32900C77E44 /* MCOAbstractPart+Private.h in Headers */, + 27780D5819CFA32A00C77E44 /* MCOAddress+Private.h in Headers */, + 27780D5B19CFA32A00C77E44 /* MCOMessageHeader+Private.h in Headers */, + 27780D6D19CFA32B00C77E44 /* MCOIMAPBaseOperation+Private.h in Headers */, + 27780D8719CFA32D00C77E44 /* MCOOperation+Private.h in Headers */, + 27780D9119CFA32E00C77E44 /* MCOIndexSet+Private.h in Headers */, + 27780DFC19CFA34200C77E44 /* MCValuePrivate.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ + 27780C2A19CF9CD100C77E44 /* mailcore ios */ = { + isa = PBXNativeTarget; + buildConfigurationList = 27780C3719CF9CD100C77E44 /* Build configuration list for PBXNativeTarget "mailcore ios" */; + buildPhases = ( + 27780C2D19CF9CD100C77E44 /* Sources */, + 27780C2F19CF9CD100C77E44 /* ShellScript */, + 27780C3019CF9CD100C77E44 /* Frameworks */, + 27780C3519CF9CD100C77E44 /* Resources */, + 27780D3319CF9FA300C77E44 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 27780C4019CF9DE600C77E44 /* PBXTargetDependency */, + ); + name = "mailcore ios"; + productName = "mailcore framework"; + productReference = 27780C3A19CF9CD100C77E44 /* MailCore-ios.framework */; + productType = "com.apple.product-type.framework"; + }; C64EA536169E772200778456 /* static mailcore2 osx */ = { isa = PBXNativeTarget; buildConfigurationList = C64EA53B169E772200778456 /* Build configuration list for PBXNativeTarget "static mailcore2 osx" */; @@ -2665,6 +3738,7 @@ C6BD28A6170BD87600A91AC1 /* ShellScript */, C6BD2889170BD71100A91AC1 /* Frameworks */, C6BD288B170BD71100A91AC1 /* Resources */, + 27780C4119CF9E1400C77E44 /* Headers */, ); buildRules = ( ); @@ -2702,11 +3776,20 @@ C64EA78B169F259200778456 /* tests */, C6A81B901706840C00882C15 /* test-ios */, C6BD288C170BD71100A91AC1 /* mailcore osx */, + 27780C2A19CF9CD100C77E44 /* mailcore ios */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 27780C3519CF9CD100C77E44 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 27780C3619CF9CD100C77E44 /* providers.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 84AF9E7F172DBB0000E60AA3 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2740,6 +3823,19 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 27780C2F19CF9CD100C77E44 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "rsync -a \"$BUILT_PRODUCTS_DIR/include/MailCore/\" \"$BUILT_PRODUCTS_DIR/$PUBLIC_HEADERS_FOLDER_PATH\"\ncd \"$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME\"\nrm -f Headers\nln -sf \"Versions/Current/Headers\" Headers\n"; + }; C64EA780169E867600778456 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 12; @@ -2782,6 +3878,14 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 27780C2D19CF9CD100C77E44 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 27780C2E19CF9CD100C77E44 /* MCOFramework.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; C64EA533169E772200778456 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3222,6 +4326,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 27780C4019CF9DE600C77E44 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C6BA2B091705F4E6003F0E9E /* static mailcore2 ios */; + targetProxy = 27780C3F19CF9DE600C77E44 /* PBXContainerItemProxy */; + }; C6A81BB11706852200882C15 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = C6BA2B091705F4E6003F0E9E /* static mailcore2 ios */; @@ -3240,6 +4349,66 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 27780C3819CF9CD100C77E44 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + COMBINE_HIDPI_IMAGES = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "framework-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_LDFLAGS = ( + "-lctemplate-ios", + "-letpan-ios", + "-licudata", + "-licui18n", + "-licuuc", + "-lxml2", + "-lsasl2", + "-liconv", + "-ltidy", + "-lz", + "-licucore", + "-ObjC", + ); + PRODUCT_NAME = "MailCore-ios"; + SDKROOT = iphoneos; + WRAPPER_EXTENSION = framework; + }; + name = Debug; + }; + 27780C3919CF9CD100C77E44 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "iPhone Developer"; + COMBINE_HIDPI_IMAGES = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "framework-Info.plist"; + INSTALL_PATH = "@executable_path/../Frameworks"; + OTHER_LDFLAGS = ( + "-lctemplate-ios", + "-letpan-ios", + "-licudata", + "-licui18n", + "-licuuc", + "-lxml2", + "-lsasl2", + "-liconv", + "-ltidy", + "-lz", + "-licucore", + "-ObjC", + ); + PRODUCT_NAME = "MailCore-ios"; + SDKROOT = iphoneos; + WRAPPER_EXTENSION = framework; + }; + name = Release; + }; C64EA539169E772200778456 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3535,6 +4704,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 27780C3719CF9CD100C77E44 /* Build configuration list for PBXNativeTarget "mailcore ios" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 27780C3819CF9CD100C77E44 /* Debug */, + 27780C3919CF9CD100C77E44 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; C64EA531169E772200778456 /* Build configuration list for PBXProject "mailcore2" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/example/ios/iOS UI Test/iOS UI Test/MCTMsgViewController.mm b/example/ios/iOS UI Test/iOS UI Test/MCTMsgViewController.mm index ed41fd87..db8a1122 100755 --- a/example/ios/iOS UI Test/iOS UI Test/MCTMsgViewController.mm +++ b/example/ios/iOS UI Test/iOS UI Test/MCTMsgViewController.mm @@ -50,7 +50,7 @@ } else { [_messageView setMessage:NULL]; - MCOIMAPFetchContentOperation * op = [_session fetchMessageByUIDOperationWithFolder:_folder uid:[_message uid]]; + MCOIMAPFetchContentOperation * op = [_session fetchMessageOperationWithFolder:_folder uid:[_message uid]]; [_ops addObject:op]; [op start:^(NSError * error, NSData * data) { if ([error code] != MCOErrorNone) { @@ -99,7 +99,7 @@ [_pending addObject:partUniqueID]; - MCOIMAPFetchContentOperation * op = [_session fetchMessageAttachmentByUIDOperationWithFolder:folder uid:[_message uid] partID:[part partID] encoding:[part encoding]]; + MCOIMAPFetchContentOperation * op = [_session fetchMessageAttachmentOperationWithFolder:folder uid:[_message uid] partID:[part partID] encoding:[part encoding]]; [_ops addObject:op]; [op start:^(NSError * error, NSData * data) { if ([error code] != MCOErrorNone) { diff --git a/example/mac/macExample/macExample/MCTMsgListViewController.m b/example/mac/macExample/macExample/MCTMsgListViewController.m index 0d7cee7a..01aad8ae 100644 --- a/example/mac/macExample/macExample/MCTMsgListViewController.m +++ b/example/mac/macExample/macExample/MCTMsgListViewController.m @@ -58,7 +58,7 @@ MCOIMAPMessagesRequestKindInternalDate | MCOIMAPMessagesRequestKindHeaderSubject | MCOIMAPMessagesRequestKindFlags); - _op = [_session fetchMessagesByUIDOperationWithFolder:FOLDER requestKind:requestKind uids:[MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)]]; + _op = [_session fetchMessagesOperationWithFolder:FOLDER requestKind:requestKind uids:[MCOIndexSet indexSetWithRange:MCORangeMake(1, UINT64_MAX)]]; [_op setProgress:^(unsigned int current){ //NSLog(@"progress: %u", current); }]; diff --git a/example/mac/macExample/macExample/MCTMsgViewController.m b/example/mac/macExample/macExample/MCTMsgViewController.m index f26b783f..67cc3892 100644 --- a/example/mac/macExample/macExample/MCTMsgViewController.m +++ b/example/mac/macExample/macExample/MCTMsgViewController.m @@ -49,7 +49,7 @@ } else { [_messageView setMessage:NULL]; - MCOIMAPFetchContentOperation * op = [_session fetchMessageByUIDOperationWithFolder:_folder uid:[_message uid]]; + MCOIMAPFetchContentOperation * op = [_session fetchMessageOperationWithFolder:_folder uid:[_message uid]]; [_ops addObject:op]; [op start:^(NSError * error, NSData * data) { if ([error code] != MCOErrorNone) { @@ -84,7 +84,7 @@ [_pending addObject:partUniqueID]; - MCOIMAPFetchContentOperation * op = [_session fetchMessageAttachmentByUIDOperationWithFolder:folder uid:[_message uid] partID:[part partID] encoding:[part encoding]]; + MCOIMAPFetchContentOperation * op = [_session fetchMessageAttachmentOperationWithFolder:folder uid:[_message uid] partID:[part partID] encoding:[part encoding]]; [_ops addObject:op]; [op start:^(NSError * error, NSData * data) { if ([error code] != MCOErrorNone) { diff --git a/resources/providers.json b/resources/providers.json index b53e6175..10d60b51 100644 --- a/resources/providers.json +++ b/resources/providers.json @@ -1,22 +1,152 @@ { + "hushmail":{ + "servers":{ + "imap":[ + { + "port": 993, + "hostname":"imap.hushmail.com", + "ssl":true + } + ], + "pop":[ + { + "port": 995, + "hostname":"pop.hushmail.com", + "ssl":true + } + ], + "smtp":[ + { + "port":587, + "hostname":"smtp.hushmail.com", + "ssl":true + }, + { + "port":465, + "hostname":"smtp.hushmail.com", + "ssl":true + }, + { + "port":25, + "hostname":"smtp.hushmail.com", + "starttls":true + } + ] + }, + "domain-match":[ + "hushmail\\.com" + ] + }, + "mail":{ + "servers":{ + "imap":[ + { + "port": 993, + "hostname":"imap.mail.com", + "ssl":true + } + ], + "pop":[ + { + "port": 995, + "hostname":"pop.mail.com", + "ssl":true + } + ], + "smtp":[ + { + "port":587, + "hostname":"smtp.mail.com", + "ssl":true + }, + { + "port":465, + "hostname":"smtp.mail.com", + "ssl":true + }, + { + "port":25, + "hostname":"smtp.mail.com", + "ssl":true + } + ] + }, + "domain-match":[ + "mail\\.com" + ] + }, + "zoho":{ + "servers":{ + "imap":[ + { + "port": 993, + "hostname":"imap.zoho.com", + "ssl":true + } + ], + "pop":[ + { + "port": 995, + "hostname":"pop.zoho.com", + "ssl":true + } + ], + "smtp":[ + { + "port":465, + "hostname":"smtp.zoho.com", + "ssl":true + }, + { + "port":587, + "hostname":"smtp.zoho.com", + "starttls":true + } + ] + }, + "domain-match":[ + "zoho\\.com" + ] + }, + "juno":{ + "servers":{ + "pop":[ + { + "port": 995, + "hostname":"pop.juno.com", + "ssl":true + } + ], + "smtp":[ + { + "port":465, + "hostname":"smtp.juno.com", + "starttls":true + } + ] + }, + "domain-match":[ + "juno\\.com" + ] + }, "mobileme":{ "servers":{ "imap":[ { "port":993, - "hostname":"mail.me.com", + "hostname":"imap.mail.me.com", "ssl":true }, { "port":143, - "hostname":"mail.me.com", + "hostname":"imap.mail.me.com", "starttls":true } ], "smtp":[ { "port":587, - "hostname":"smtp.me.com", + "hostname":"smtp.mail.me.com", "starttls":true } ] @@ -957,6 +1087,34 @@ "trash": "Корзина" } }, + "yandex": { + "servers": { + "imap": [ + { + "port": 993, + "hostname": "imap.yandex.ru", + "ssl": true + } + ], + "smtp": [ + { + "port": 465, + "hostname": "smtp.yandex.ru", + "ssl": true + } + ] + + }, + "domain-match": [ + "yandex\\.ru" + ], + "mailboxes": { + "drafts": "Черновики", + "spam": "Спам", + "sentmail": "Отправленные", + "trash": "Удалённые" + } + }, "comcast": { "servers": { "pop": [{ diff --git a/scripts/build-mailcore2-ios.sh b/scripts/build-mailcore2-ios.sh index b6d3bfe7..d388d530 100755 --- a/scripts/build-mailcore2-ios.sh +++ b/scripts/build-mailcore2-ios.sh @@ -1,17 +1,20 @@ #!/bin/sh -if xcodebuild -showsdks|grep iphoneos6.1 >/dev/null ; then - sdkversion=6.1 - devicearchs="armv7 armv7s" -elif xcodebuild -showsdks|grep iphoneos7.0 >/dev/null ; then - sdkversion=7.0 +if xcodebuild -showsdks|grep iphoneos8.1 >/dev/null ; then + sdkversion=8.1 + devicearchs="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then + sdkversion=8.0 devicearchs="armv7 armv7s arm64" elif xcodebuild -showsdks|grep iphoneos7.1 >/dev/null ; then sdkversion=7.1 devicearchs="armv7 armv7s arm64" -elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then - sdkversion=8.0 +elif xcodebuild -showsdks|grep iphoneos7.0 >/dev/null ; then + sdkversion=7.0 devicearchs="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos6.1 >/dev/null ; then + sdkversion=6.1 + devicearchs="armv7 armv7s" else echo SDK not found exit 1 @@ -69,7 +72,7 @@ if test x$? != x0 ; then exit 1 fi sdk="iphonesimulator$sdkversion" -simarchs="i386" +simarchs="i386 x86_64" echo building $sdk xcodebuild -project mailcore2.xcodeproj -sdk $sdk -target "static mailcore2 ios" -configuration Release SYMROOT="$tmpdir/bin" OBJROOT="$tmpdir/obj" ARCHS="$simarchs" if test x$? != x0 ; then diff --git a/scripts/get-prebuilt.sh b/scripts/get-prebuilt.sh index c9b9e193..b7d76670 100755 --- a/scripts/get-prebuilt.sh +++ b/scripts/get-prebuilt.sh @@ -2,6 +2,7 @@ url="https://github.com/MailCore/mailcore2-deps" url_prefix="$url/raw/master" +content_prefix="https://raw.githubusercontent.com/MailCore/mailcore2-deps/master" if test x$1 != xskipprebuilt ; then file_timestamp=0 @@ -15,8 +16,7 @@ if test x$1 != xskipprebuilt ; then fi if test $age -gt 0 ; then networkerror=no - #echo "$url_prefix/prebuilt.list" - curl -3 -s -L "$url_prefix/prebuilt.list" > prebuilt.list.tmp + curl -s -L "$content_prefix/prebuilt.list" > prebuilt.list.tmp if test x$? != x0 ; then networkerror=yes fi diff --git a/scripts/prepare-ctemplate-ios.sh b/scripts/prepare-ctemplate-ios.sh index d23c10fd..228f2294 100755 --- a/scripts/prepare-ctemplate-ios.sh +++ b/scripts/prepare-ctemplate-ios.sh @@ -2,7 +2,10 @@ url="https://github.com/dinhviethoa/ctemplate" -if xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then +if xcodebuild -showsdks|grep iphoneos8.1 >/dev/null ; then + sdkversion=8.1 + MARCHS="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then sdkversion=8.0 MARCHS="armv7 armv7s arm64" elif xcodebuild -showsdks|grep iphoneos7.1 >/dev/null ; then diff --git a/scripts/prepare-icu4c-ios.sh b/scripts/prepare-icu4c-ios.sh index 1e84686a..2e01c2db 100755 --- a/scripts/prepare-icu4c-ios.sh +++ b/scripts/prepare-icu4c-ios.sh @@ -1,11 +1,14 @@ #!/bin/sh -if xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then +if xcodebuild -showsdks|grep iphoneos8.1 >/dev/null ; then + sdkversion=8.1 + archs="armv7 armv7s arm64 i386 x86_64" +elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then sdkversion=8.0 archs="armv7 armv7s arm64 i386 x86_64" elif xcodebuild -showsdks|grep iphoneos7.1 >/dev/null ; then - sdkversion=7.1 - archs="armv7 armv7s arm64 i386 x86_64" + sdkversion=7.1 + archs="armv7 armv7s arm64 i386 x86_64" elif xcodebuild -showsdks|grep iphoneos7.0 >/dev/null ; then sdkversion=7.0 archs="armv7 armv7s arm64 i386 x86_64" @@ -95,13 +98,20 @@ make # >> "$logdir/icu4c-build.log" make install "prefix=$tmpdir/crossbuild/icu4c-$MARCH" # >> "$logdir/icu4c-build.log" ARCH=arm -if xcodebuild -showsdks|grep iphoneos7.0 >/dev/null ; then +if xcodebuild -showsdks|grep iphoneos8.1 >/dev/null ; then + sdkversion=8.1 + MARCHS="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then + sdkversion=8.0 + MARCHS="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos7.1 >/dev/null ; then + sdkversion=7.1 + MARCHS="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos7.0 >/dev/null ; then sdkversion=7.0 MARCHS="armv7 armv7s arm64" elif xcodebuild -showsdks|grep iphoneos6.1 >/dev/null ; then MARCHS="armv7 armv7s" -elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then - MARCHS="armv7 armv7s arm64" else echo SDK not found exit 1 diff --git a/scripts/prepare-icu4c-macos.sh b/scripts/prepare-icu4c-macos.sh index 13455f44..d7d6f46b 100755 --- a/scripts/prepare-icu4c-macos.sh +++ b/scripts/prepare-icu4c-macos.sh @@ -6,7 +6,7 @@ build_version="$version~1" url="http://download.icu-project.org/files/icu4c/$versionfolder/icu4c-$version-src.tgz" package_filename="icu4c-$version-src.tgz" arch="x86_64" -sysrootpath="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk" +sysrootpath="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk" enable_icu_data=0 arch_flags="" diff --git a/scripts/prepare-libetpan-ios.sh b/scripts/prepare-libetpan-ios.sh index 154f855b..a781656e 100755 --- a/scripts/prepare-libetpan-ios.sh +++ b/scripts/prepare-libetpan-ios.sh @@ -1,6 +1,9 @@ #!/bin/sh -if xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then +if xcodebuild -showsdks|grep iphoneos8.1 >/dev/null ; then + sdkversion=8.1 + devicearchs="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then sdkversion=8.0 devicearchs="armv7 armv7s arm64" elif xcodebuild -showsdks|grep iphoneos7.1 >/dev/null ; then @@ -18,7 +21,7 @@ else fi url="https://github.com/dinhviethoa/libetpan.git" -rev=4d5df1aec89ec19f2c51249986007267a1adea27 +rev=126bd7c564d0b60eec90684af179f96873edae48 pushd `dirname $0` > /dev/null scriptpath=`pwd` diff --git a/scripts/prepare-libetpan-macos.sh b/scripts/prepare-libetpan-macos.sh index 562f30d6..6752973d 100755 --- a/scripts/prepare-libetpan-macos.sh +++ b/scripts/prepare-libetpan-macos.sh @@ -1,7 +1,7 @@ #!/bin/sh url="https://github.com/dinhviethoa/libetpan.git" -rev=4d5df1aec89ec19f2c51249986007267a1adea27 +rev=126bd7c564d0b60eec90684af179f96873edae48 pushd `dirname $0` > /dev/null scriptpath=`pwd` diff --git a/scripts/prepare-tidy-ios.sh b/scripts/prepare-tidy-ios.sh index cae34513..0bce77d0 100755 --- a/scripts/prepare-tidy-ios.sh +++ b/scripts/prepare-tidy-ios.sh @@ -1,8 +1,11 @@ #!/bin/sh -if xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then +if xcodebuild -showsdks|grep iphoneos8.1 >/dev/null ; then + sdkversion=8.1 + devicearchs="armv7 armv7s arm64" +elif xcodebuild -showsdks|grep iphoneos8.0 >/dev/null ; then sdkversion=8.0 - devicearchs="armv7 armv7s arm64" + devicearchs="armv7 armv7s arm64" elif xcodebuild -showsdks|grep iphoneos7.1 >/dev/null ; then sdkversion=7.1 devicearchs="armv7 armv7s arm64" diff --git a/scripts/prepare.sh b/scripts/prepare.sh index 9b76ec12..6ba0c188 100755 --- a/scripts/prepare.sh +++ b/scripts/prepare.sh @@ -1,4 +1,15 @@ #!/bin/sh -./prepare-mac.sh -./prepare-ios.sh +# If this script is run outside of Xcode, prepare both platforms by default +if [ -z "$SDKROOT" ]; then + SDKROOT="MacOSX iPhone" +fi + +if echo "$SDKROOT" | grep -q "MacOSX"; then + echo "Preparing Mac" + ./prepare-mac.sh +fi +if echo "$SDKROOT" | grep -q "iPhone"; then + echo "Preparing iOS" + ./prepare-ios.sh +fi diff --git a/scripts/travis/script.sh b/scripts/travis/script.sh index 0790e1d3..3473452b 100755 --- a/scripts/travis/script.sh +++ b/scripts/travis/script.sh @@ -4,22 +4,30 @@ set -e echo Operating system: uname +mkdir -p Externals/prebuilt +cd Externals/prebuilt +git clone --depth=1 https://github.com/MailCore/mailcore2-deps +cd ../.. +cp Externals/prebuilt/mailcore2-deps/prebuilt.list scripts/prebuilt.list +mkdir -p Externals/builds/builds +rsync --exclude=.git -av Externals/prebuilt/mailcore2-deps/ Externals/builds/builds/ + if test x"`uname`" = xDarwin ; then echo Building library for iPhoneOS - xctool -project build-mac/mailcore2.xcodeproj -sdk iphoneos7.1 -scheme "static mailcore2 ios" build ARCHS="armv7 armv7s arm64" + xctool -project build-mac/mailcore2.xcodeproj -sdk iphoneos8.0 -scheme "static mailcore2 ios" build ARCHS="armv7 armv7s arm64" echo Building library for iPhoneSimulator - xctool -project build-mac/mailcore2.xcodeproj -sdk iphonesimulator7.1 -scheme "static mailcore2 ios" build ARCHS="i386 x86_64" + xctool -project build-mac/mailcore2.xcodeproj -sdk iphonesimulator8.0 -scheme "static mailcore2 ios" build ARCHS="i386 x86_64" #echo Link test for iPhoneOS #xcodebuild -project build-mac/mailcore2.xcodeproj -sdk iphoneos7.1 -target "test-ios" CODE_SIGN_IDENTITY="" build echo Link test for iPhoneSimulator - xctool -project build-mac/mailcore2.xcodeproj -sdk iphonesimulator7.1 -scheme "test-ios" build ARCHS="i386 x86_64" + xctool -project build-mac/mailcore2.xcodeproj -sdk iphonesimulator8.0 -scheme "test-ios" build ARCHS="i386 x86_64" echo Building library for Mac - xctool -project build-mac/mailcore2.xcodeproj -sdk macosx10.8 -scheme "static mailcore2 osx" build + xctool -project build-mac/mailcore2.xcodeproj -sdk macosx10.9 -scheme "static mailcore2 osx" build echo Building framework for Mac - xctool -project build-mac/mailcore2.xcodeproj -sdk macosx10.8 -scheme "mailcore osx" build + xctool -project build-mac/mailcore2.xcodeproj -sdk macosx10.9 -scheme "mailcore osx" build echo Link test for Mac - xctool -project build-mac/mailcore2.xcodeproj -sdk macosx10.8 -scheme "tests" build + xctool -project build-mac/mailcore2.xcodeproj -sdk macosx10.9 -scheme "tests" build fi echo Testing CMake build diff --git a/src/async/imap/MCIMAPAsyncSession.cc b/src/async/imap/MCIMAPAsyncSession.cc index 68625746..ef3bb621 100755 --- a/src/async/imap/MCIMAPAsyncSession.cc +++ b/src/async/imap/MCIMAPAsyncSession.cc @@ -524,7 +524,32 @@ IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageAttachmentByUIDOperati return op; } -IMAPOperation * IMAPAsyncSession::storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags) +IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageByNumberOperation(String * folder, uint32_t number, bool urgent) +{ + IMAPFetchContentOperation * op = new IMAPFetchContentOperation(); + op->setMainSession(this); + op->setFolder(folder); + op->setNumber(number); + op->setUrgent(urgent); + op->autorelease(); + return op; +} + +IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageAttachmentByNumberOperation(String * folder, uint32_t number, String * partID, + Encoding encoding, bool urgent) +{ + IMAPFetchContentOperation * op = new IMAPFetchContentOperation(); + op->setMainSession(this); + op->setFolder(folder); + op->setNumber(number); + op->setPartID(partID); + op->setEncoding(encoding); + op->setUrgent(urgent); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::storeFlagsByUIDOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags) { IMAPStoreFlagsOperation * op = new IMAPStoreFlagsOperation(); op->setMainSession(this); @@ -537,7 +562,20 @@ IMAPOperation * IMAPAsyncSession::storeFlagsOperation(String * folder, IndexSet return op; } -IMAPOperation * IMAPAsyncSession::storeLabelsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels) +IMAPOperation * IMAPAsyncSession::storeFlagsByNumberOperation(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags) +{ + IMAPStoreFlagsOperation * op = new IMAPStoreFlagsOperation(); + op->setMainSession(this); + op->setFolder(folder); + op->setNumbers(numbers); + op->setKind(kind); + op->setFlags(flags); + op->setCustomFlags(customFlags); + op->autorelease(); + return op; +} + +IMAPOperation * IMAPAsyncSession::storeLabelsByUIDOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels) { IMAPStoreLabelsOperation * op = new IMAPStoreLabelsOperation(); op->setMainSession(this); @@ -549,6 +587,18 @@ IMAPOperation * IMAPAsyncSession::storeLabelsOperation(String * folder, IndexSet return op; } +IMAPOperation * IMAPAsyncSession::storeLabelsByNumberOperation(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, Array * labels) +{ + IMAPStoreLabelsOperation * op = new IMAPStoreLabelsOperation(); + op->setMainSession(this); + op->setFolder(folder); + op->setNumbers(numbers); + op->setKind(kind); + op->setLabels(labels); + op->autorelease(); + return op; +} + IMAPSearchOperation * IMAPAsyncSession::searchOperation(String * folder, IMAPSearchKind kind, String * searchString) { IMAPSearchOperation * op = new IMAPSearchOperation(); diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h index 333783b2..a7ec90a0 100755 --- a/src/async/imap/MCIMAPAsyncSession.h +++ b/src/async/imap/MCIMAPAsyncSession.h @@ -133,8 +133,14 @@ namespace mailcore { virtual IMAPFetchContentOperation * fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID, Encoding encoding, bool urgent = false); - virtual IMAPOperation * storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags = NULL); - virtual IMAPOperation * storeLabelsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels); + virtual IMAPFetchContentOperation * fetchMessageByNumberOperation(String * folder, uint32_t number, bool urgent = false); + virtual IMAPFetchContentOperation * fetchMessageAttachmentByNumberOperation(String * folder, uint32_t number, String * partID, + Encoding encoding, bool urgent = false); + + virtual IMAPOperation * storeFlagsByUIDOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags = NULL); + virtual IMAPOperation * storeFlagsByNumberOperation(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags = NULL); + virtual IMAPOperation * storeLabelsByUIDOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels); + virtual IMAPOperation * storeLabelsByNumberOperation(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, Array * labels); virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchKind kind, String * searchString); virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchExpression * expression); diff --git a/src/async/imap/MCIMAPFetchContentOperation.cc b/src/async/imap/MCIMAPFetchContentOperation.cc index de3b911e..049ac8a7 100644 --- a/src/async/imap/MCIMAPFetchContentOperation.cc +++ b/src/async/imap/MCIMAPFetchContentOperation.cc @@ -16,6 +16,7 @@ using namespace mailcore; IMAPFetchContentOperation::IMAPFetchContentOperation() { mUid = 0; + mNumber = 0; mPartID = NULL; mEncoding = Encoding7Bit; mData = NULL; @@ -37,6 +38,16 @@ uint32_t IMAPFetchContentOperation::uid() return mUid; } +void IMAPFetchContentOperation::setNumber(uint32_t value) +{ + mNumber = value; +} + +uint32_t IMAPFetchContentOperation::number() +{ + return mNumber; +} + void IMAPFetchContentOperation::setPartID(String * partID) { MC_SAFE_REPLACE_COPY(String, mPartID, partID); @@ -65,11 +76,21 @@ Data * IMAPFetchContentOperation::data() void IMAPFetchContentOperation::main() { ErrorCode error; - if (mPartID != NULL) { - mData = session()->session()->fetchMessageAttachmentByUID(folder(), mUid, mPartID, mEncoding, this, &error); + if (mUid != 0) { + if (mPartID != NULL) { + mData = session()->session()->fetchMessageAttachmentByUID(folder(), mUid, mPartID, mEncoding, this, &error); + } + else { + mData = session()->session()->fetchMessageByUID(folder(), mUid, this, &error); + } } else { - mData = session()->session()->fetchMessageByUID(folder(), mUid, this, &error); + if (mPartID != NULL) { + mData = session()->session()->fetchMessageAttachmentByNumber(folder(), mNumber, mPartID, mEncoding, this, &error); + } + else { + mData = session()->session()->fetchMessageByNumber(folder(), mNumber, this, &error); + } } MC_SAFE_RETAIN(mData); setError(error); diff --git a/src/async/imap/MCIMAPFetchContentOperation.h b/src/async/imap/MCIMAPFetchContentOperation.h index 3d4dd17d..3cae3c5a 100644 --- a/src/async/imap/MCIMAPFetchContentOperation.h +++ b/src/async/imap/MCIMAPFetchContentOperation.h @@ -24,6 +24,9 @@ namespace mailcore { virtual void setUid(uint32_t uid); virtual uint32_t uid(); + virtual void setNumber(uint32_t value); + virtual uint32_t number(); + virtual void setPartID(String * partID); virtual String * partID(); @@ -38,6 +41,7 @@ namespace mailcore { private: uint32_t mUid; + uint32_t mNumber; String * mPartID; Encoding mEncoding; Data * mData; diff --git a/src/async/imap/MCIMAPFolderInfoOperation.cc b/src/async/imap/MCIMAPFolderInfoOperation.cc index 8ca500f3..0ea0d005 100644 --- a/src/async/imap/MCIMAPFolderInfoOperation.cc +++ b/src/async/imap/MCIMAPFolderInfoOperation.cc @@ -20,6 +20,7 @@ IMAPFolderInfoOperation::IMAPFolderInfoOperation() mMessageCount = 0; mModSequenceValue = 0; mFirstUnseenUid = 0; + mAllowsNewPermanentFlags = false; } IMAPFolderInfoOperation::~IMAPFolderInfoOperation() @@ -51,6 +52,11 @@ uint32_t IMAPFolderInfoOperation::firstUnseenUid() return mFirstUnseenUid; } +bool IMAPFolderInfoOperation::allowsNewPermanentFlags() +{ + return mAllowsNewPermanentFlags; +} + void IMAPFolderInfoOperation::main() { ErrorCode error; @@ -73,7 +79,8 @@ void IMAPFolderInfoOperation::main() mModSequenceValue = session()->session()->modSequenceValue(); mMessageCount = session()->session()->lastFolderMessageCount(); mFirstUnseenUid = session()->session()->firstUnseenUid(); - + mAllowsNewPermanentFlags = session()->session()->allowsNewPermanentFlags(); + setError(error); } diff --git a/src/async/imap/MCIMAPFolderInfoOperation.h b/src/async/imap/MCIMAPFolderInfoOperation.h index 9b0027a4..b53be2cb 100644 --- a/src/async/imap/MCIMAPFolderInfoOperation.h +++ b/src/async/imap/MCIMAPFolderInfoOperation.h @@ -26,6 +26,7 @@ namespace mailcore { virtual uint64_t modSequenceValue(); virtual int messageCount(); virtual uint32_t firstUnseenUid(); + virtual bool allowsNewPermanentFlags(); public: // subclass behavior virtual void main(); @@ -37,7 +38,8 @@ namespace mailcore { uint64_t mModSequenceValue; int mMessageCount; uint32_t mFirstUnseenUid; - + bool mAllowsNewPermanentFlags; + }; } diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.cc b/src/async/imap/MCIMAPStoreFlagsOperation.cc index df68529a..a049333e 100644 --- a/src/async/imap/MCIMAPStoreFlagsOperation.cc +++ b/src/async/imap/MCIMAPStoreFlagsOperation.cc @@ -16,6 +16,7 @@ using namespace mailcore; IMAPStoreFlagsOperation::IMAPStoreFlagsOperation() { mUids = NULL; + mNumbers = NULL; mKind = IMAPStoreFlagsRequestKindAdd; mFlags = MessageFlagNone; mCustomFlags = NULL; @@ -23,6 +24,7 @@ IMAPStoreFlagsOperation::IMAPStoreFlagsOperation() IMAPStoreFlagsOperation::~IMAPStoreFlagsOperation() { + MC_SAFE_RELEASE(mNumbers); MC_SAFE_RELEASE(mUids); MC_SAFE_RELEASE(mCustomFlags); } @@ -37,6 +39,16 @@ IndexSet * IMAPStoreFlagsOperation::uids() return mUids; } +void IMAPStoreFlagsOperation::setNumbers(IndexSet * numbers) +{ + MC_SAFE_REPLACE_RETAIN(IndexSet, mNumbers, numbers); +} + +IndexSet * IMAPStoreFlagsOperation::numbers() +{ + return mNumbers; +} + void IMAPStoreFlagsOperation::setKind(IMAPStoreFlagsRequestKind kind) { mKind = kind; @@ -70,6 +82,11 @@ Array * IMAPStoreFlagsOperation::customFlags() void IMAPStoreFlagsOperation::main() { ErrorCode error; - session()->session()->storeFlagsAndCustomFlags(folder(), mUids, mKind, mFlags, mCustomFlags, &error); + if (mUids != NULL) { + session()->session()->storeFlagsAndCustomFlagsByUID(folder(), mUids, mKind, mFlags, mCustomFlags, &error); + } + else { + session()->session()->storeFlagsAndCustomFlagsByNumber(folder(), mNumbers, mKind, mFlags, mCustomFlags, &error); + } setError(error); } diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.h b/src/async/imap/MCIMAPStoreFlagsOperation.h index f6219b30..1687f5cd 100644 --- a/src/async/imap/MCIMAPStoreFlagsOperation.h +++ b/src/async/imap/MCIMAPStoreFlagsOperation.h @@ -24,6 +24,9 @@ namespace mailcore { virtual void setUids(IndexSet * uids); virtual IndexSet * uids(); + virtual void setNumbers(IndexSet * numbers); + virtual IndexSet * numbers(); + virtual void setKind(IMAPStoreFlagsRequestKind kind); virtual IMAPStoreFlagsRequestKind kind(); @@ -38,6 +41,7 @@ namespace mailcore { private: IndexSet * mUids; + IndexSet * mNumbers; IMAPStoreFlagsRequestKind mKind; MessageFlag mFlags; Array * mCustomFlags; diff --git a/src/async/imap/MCIMAPStoreLabelsOperation.cc b/src/async/imap/MCIMAPStoreLabelsOperation.cc index ed738d11..3ad2212a 100644 --- a/src/async/imap/MCIMAPStoreLabelsOperation.cc +++ b/src/async/imap/MCIMAPStoreLabelsOperation.cc @@ -16,12 +16,14 @@ using namespace mailcore; IMAPStoreLabelsOperation::IMAPStoreLabelsOperation() { mUids = NULL; + mNumbers = NULL; mKind = IMAPStoreFlagsRequestKindAdd; mLabels = NULL; } IMAPStoreLabelsOperation::~IMAPStoreLabelsOperation() { + MC_SAFE_RELEASE(mNumbers); MC_SAFE_RELEASE(mUids); MC_SAFE_RELEASE(mLabels); } @@ -36,6 +38,16 @@ IndexSet * IMAPStoreLabelsOperation::uids() return mUids; } +void IMAPStoreLabelsOperation::setNumbers(IndexSet * numbers) +{ + MC_SAFE_REPLACE_RETAIN(IndexSet, mNumbers, numbers); +} + +IndexSet * IMAPStoreLabelsOperation::numbers() +{ + return mNumbers; +} + void IMAPStoreLabelsOperation::setKind(IMAPStoreFlagsRequestKind kind) { mKind = kind; @@ -59,7 +71,12 @@ Array * IMAPStoreLabelsOperation::labels() void IMAPStoreLabelsOperation::main() { ErrorCode error; - session()->session()->storeLabels(folder(), mUids, mKind, mLabels, &error); + if (mUids != NULL) { + session()->session()->storeLabelsByUID(folder(), mUids, mKind, mLabels, &error); + } + else { + session()->session()->storeLabelsByNumber(folder(), mUids, mKind, mLabels, &error); + } setError(error); } diff --git a/src/async/imap/MCIMAPStoreLabelsOperation.h b/src/async/imap/MCIMAPStoreLabelsOperation.h index 822cd83f..53348309 100644 --- a/src/async/imap/MCIMAPStoreLabelsOperation.h +++ b/src/async/imap/MCIMAPStoreLabelsOperation.h @@ -24,6 +24,9 @@ namespace mailcore { virtual void setUids(IndexSet * uids); virtual IndexSet * uids(); + virtual void setNumbers(IndexSet * numbers); + virtual IndexSet * numbers(); + virtual void setKind(IMAPStoreFlagsRequestKind kind); virtual IMAPStoreFlagsRequestKind kind(); @@ -35,6 +38,7 @@ namespace mailcore { private: IndexSet * mUids; + IndexSet * mNumbers; IMAPStoreFlagsRequestKind mKind; Array * /* String */ mLabels; diff --git a/src/core/abstract/MCAbstractPart.cc b/src/core/abstract/MCAbstractPart.cc index 50f12249..5b7a1c9a 100644 --- a/src/core/abstract/MCAbstractPart.cc +++ b/src/core/abstract/MCAbstractPart.cc @@ -27,6 +27,7 @@ AbstractPart::AbstractPart(AbstractPart * other) setContentDescription(other->mContentDescription); setInlineAttachment(other->mInlineAttachment); setPartType(other->mPartType); + setContentTypeParameters(other->mContentTypeParameters); } void AbstractPart::init() @@ -40,6 +41,7 @@ void AbstractPart::init() mContentDescription = NULL; mInlineAttachment = false; mPartType = PartTypeSingle; + mContentTypeParameters = NULL; } AbstractPart::~AbstractPart() @@ -51,6 +53,7 @@ AbstractPart::~AbstractPart() MC_SAFE_RELEASE(mContentID); MC_SAFE_RELEASE(mContentLocation); MC_SAFE_RELEASE(mContentDescription); + MC_SAFE_RELEASE(mContentTypeParameters); } String * AbstractPart::description() @@ -76,6 +79,11 @@ String * AbstractPart::description() result->appendUTF8Format("content-description: %s\n", mContentDescription->UTF8Characters()); } result->appendUTF8Format("inline: %i\n", mInlineAttachment); + if (mContentTypeParameters != NULL) { + mc_foreachhashmapKeyAndValue(String, key, String, value, mContentTypeParameters) { + result->appendUTF8Format("%s: %s\n", key->UTF8Characters(), value->UTF8Characters()); + } + } result->appendUTF8Format(">"); return result; @@ -395,3 +403,46 @@ void AbstractPart::importSerializable(HashMap * serializable) } } } + +void AbstractPart::setContentTypeParameters(HashMap * parameters) +{ + MC_SAFE_REPLACE_COPY(HashMap, mContentTypeParameters, parameters); +} + +Array * AbstractPart::allContentTypeParametersNames() +{ + if (mContentTypeParameters == NULL) + return Array::array(); + return mContentTypeParameters->allKeys(); +} + +void AbstractPart::setContentTypeParameter(String * name, String * object) +{ + if (mContentTypeParameters == NULL) { + mContentTypeParameters = new HashMap(); + } + removeContentTypeParameter(name); + mContentTypeParameters->setObjectForKey(name, object); +} + +void AbstractPart::removeContentTypeParameter(String * name) +{ + if (mContentTypeParameters == NULL) + return; + mc_foreachhashmapKey(String, key, mContentTypeParameters) { + if (key->isEqualCaseInsensitive(name)) { + mContentTypeParameters->removeObjectForKey(key); + break; + } + } +} + +String * AbstractPart::contentTypeParameterValueForName(String * name) +{ + mc_foreachhashmapKey(String, key, mContentTypeParameters) { + if (key->isEqualCaseInsensitive(name)) { + return (String *) mContentTypeParameters->objectForKey(key); + } + } + return NULL; +} diff --git a/src/core/abstract/MCAbstractPart.h b/src/core/abstract/MCAbstractPart.h index 7f641205..0fcbf279 100644 --- a/src/core/abstract/MCAbstractPart.h +++ b/src/core/abstract/MCAbstractPart.h @@ -48,6 +48,12 @@ namespace mailcore { virtual String * decodedStringForData(Data * data); + void setContentTypeParameters(HashMap * parameters); + Array * allContentTypeParametersNames(); + void setContentTypeParameter(String * name, String * object); + void removeContentTypeParameter(String * name); + String * contentTypeParameterValueForName(String * name); + public: // subclass behavior AbstractPart(AbstractPart * other); virtual String * description(); @@ -70,6 +76,7 @@ namespace mailcore { String * mContentDescription; bool mInlineAttachment; PartType mPartType; + HashMap * mContentTypeParameters; void init(); }; diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h index 222ca322..c81f8360 100644 --- a/src/core/abstract/MCMessageConstants.h +++ b/src/core/abstract/MCMessageConstants.h @@ -178,6 +178,7 @@ namespace mailcore { IMAPSearchKindRecipient, // Recipient is the combination of To, Cc and Bcc IMAPSearchKindSubject, IMAPSearchKindContent, + IMAPSearchKindBody, IMAPSearchKindUIDs, IMAPSearchKindHeader, IMAPSearchKindRead, @@ -247,6 +248,7 @@ namespace mailcore { ErrorNoSender, ErrorNoRecipient, ErrorNoop, + ErrorGmailApplicationSpecificPasswordRequired, }; enum PartType { diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc index 6e8d2c09..89dec15c 100644 --- a/src/core/abstract/MCMessageHeader.cc +++ b/src/core/abstract/MCMessageHeader.cc @@ -62,7 +62,6 @@ void MessageHeader::init(bool generateDate, bool generateMessageID) mDate = (time_t) -1; mReceivedDate = (time_t) -1; mExtraHeaders = NULL; - mlcExtraHeaders = NULL; if (generateDate) { time_t date; @@ -116,7 +115,6 @@ MessageHeader::~MessageHeader() MC_SAFE_RELEASE(mReplyTo); MC_SAFE_RELEASE(mSubject); MC_SAFE_RELEASE(mExtraHeaders); - MC_SAFE_RELEASE(mlcExtraHeaders); } String * MessageHeader::description() @@ -307,13 +305,6 @@ String * MessageHeader::userAgent() void MessageHeader::setExtraHeaders(HashMap * headers) { MC_SAFE_REPLACE_COPY(HashMap, mExtraHeaders, headers); - MC_SAFE_RELEASE(mlcExtraHeaders); - if (mExtraHeaders != NULL) { - mlcExtraHeaders = new HashMap(); - mc_foreachhashmapKeyAndValue(String, key, String, value, mExtraHeaders) { - mlcExtraHeaders->setObjectForKey(key->lowercaseString(), value); - } - } } Array * MessageHeader::allExtraHeadersNames() @@ -328,30 +319,30 @@ void MessageHeader::setExtraHeader(String * name, String * object) if (mExtraHeaders == NULL) { mExtraHeaders = new HashMap(); } - if (mlcExtraHeaders == NULL) { - mlcExtraHeaders = new HashMap(); - } - if (object == NULL) { - removeExtraHeader(name); - return; - } + removeExtraHeader(name); mExtraHeaders->setObjectForKey(name, object); - mlcExtraHeaders->setObjectForKey(name->lowercaseString(), object); } void MessageHeader::removeExtraHeader(String * name) { if (mExtraHeaders == NULL) return; - mExtraHeaders->removeObjectForKey(name); - mlcExtraHeaders->removeObjectForKey(name); + mc_foreachhashmapKey(String, key, mExtraHeaders) { + if (key->isEqualCaseInsensitive(name)) { + mExtraHeaders->removeObjectForKey(key); + break; + } + } } String * MessageHeader::extraHeaderValueForName(String * name) { - if (mlcExtraHeaders == NULL) - return NULL; - return (String *) mlcExtraHeaders->objectForKey(name->lowercaseString()); + mc_foreachhashmapKey(String, key, mExtraHeaders) { + if (key->isEqualCaseInsensitive(name)) { + return (String *) mExtraHeaders->objectForKey(key); + } + } + return NULL; } String * MessageHeader::extractedSubject() diff --git a/src/core/abstract/MCMessageHeader.h b/src/core/abstract/MCMessageHeader.h index 51b1e2f7..4018343c 100644 --- a/src/core/abstract/MCMessageHeader.h +++ b/src/core/abstract/MCMessageHeader.h @@ -99,7 +99,6 @@ namespace mailcore { time_t mDate; time_t mReceivedDate; HashMap * mExtraHeaders; - HashMap * mlcExtraHeaders; void init(bool generateDate, bool generateMessageID); void setExtraHeaders(HashMap *headers); Array * recipientWithReplyAll(bool replyAll, bool includeTo, bool includeCc, Array * senderEmails); diff --git a/src/core/basetypes/MCIterator.h b/src/core/basetypes/MCIterator.h index c8b23fab..e1f258d4 100644 --- a/src/core/basetypes/MCIterator.h +++ b/src/core/basetypes/MCIterator.h @@ -32,13 +32,13 @@ for (unsigned int __index = 0; NULL != (__variable = (type *) mailcore::ArrayIte keyType * __key; \ HashMapIterator __key##__iterator = HashMapIteratorInit(__hashmap, true, false); \ while (HashMapIteratorRun(&__key##__iterator)) \ -while (HashMapIteratorNext(&__key##__iterator, &__key, NULL)) +while (HashMapIteratorNext(&__key##__iterator, (Object **) &__key, (Object **) NULL)) #define mc_foreachhashmapValue(valueType, __value, __hashmap) \ valueType * __value; \ HashMapIterator __value##__iterator = HashMapIteratorInit(__hashmap, false, true); \ while (HashMapIteratorRun(&__value##__iterator)) \ -while (HashMapIteratorNext(&__value##__iterator, NULL, (Object **) &__value)) +while (HashMapIteratorNext(&__value##__iterator, (Object **) NULL, (Object **) &__value)) #define mc_foreachhashmapKeyAndValue(keyType, __key, valueType, __value, __hashmap) \ keyType * __key; \ diff --git a/src/core/basetypes/MCObject.cc b/src/core/basetypes/MCObject.cc index 0e8d9639..1d8f0c27 100644 --- a/src/core/basetypes/MCObject.cc +++ b/src/core/basetypes/MCObject.cc @@ -130,6 +130,7 @@ struct mainThreadCallData { static pthread_once_t delayedPerformOnce = PTHREAD_ONCE_INIT; static chash * delayedPerformHash = NULL; +static pthread_mutex_t delayedPerformLock = PTHREAD_MUTEX_INITIALIZER; static void reallyInitDelayedPerform() { @@ -164,7 +165,9 @@ static void removeFromPerformHash(Object * obj, Object::Method method, void * co key.data = &keyData; key.len = sizeof(keyData); + pthread_mutex_lock(&delayedPerformLock); chash_delete(delayedPerformHash, (chashdatum *) &key, NULL); + pthread_mutex_unlock(&delayedPerformLock); } static void queueIdentifierDestructor(void * identifier) @@ -196,7 +199,9 @@ static void addToPerformHash(Object * obj, Object::Method method, void * context key.len = sizeof(keyData); value.data = performValue; value.len = 0; + pthread_mutex_lock(&delayedPerformLock); chash_set(delayedPerformHash, &key, &value, NULL); + pthread_mutex_unlock(&delayedPerformLock); } static void * getFromPerformHash(Object * obj, Object::Method method, void * context, void * targetDispatchQueue) @@ -221,7 +226,9 @@ static void * getFromPerformHash(Object * obj, Object::Method method, void * con key.data = &keyData; key.len = sizeof(keyData); + pthread_mutex_lock(&delayedPerformLock); r = chash_get(delayedPerformHash, &key, &value); + pthread_mutex_unlock(&delayedPerformLock); if (r < 0) return NULL; diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc index e45f04ee..7783a978 100644 --- a/src/core/basetypes/MCOperationQueue.cc +++ b/src/core/basetypes/MCOperationQueue.cc @@ -178,11 +178,21 @@ void OperationQueue::checkRunningOnMainThread(void * context) { retain(); // (4) if (_pendingCheckRunning) { +#if __APPLE__ + cancelDelayedPerformMethodOnDispatchQueue((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL, mDispatchQueue); +#else cancelDelayedPerformMethod((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL); +#endif release(); // (4) } _pendingCheckRunning = true; + +#if __APPLE__ + performMethodOnDispatchQueueAfterDelay((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL, mDispatchQueue, 1); +#else performMethodAfterDelay((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL, 1); +#endif + release(); // (1) } @@ -215,6 +225,11 @@ void OperationQueue::stoppedOnMainThread(void * context) mCallback->queueStoppedRunning(); } + if (mOperations->count() > 0) { + //Operations have been added while thread was quitting, so restart automatically + startThread(); + } + release(); // (2) release(); // (3) diff --git a/src/core/basetypes/MCString.cc b/src/core/basetypes/MCString.cc index 5c2da323..bcc1ec9d 100644 --- a/src/core/basetypes/MCString.cc +++ b/src/core/basetypes/MCString.cc @@ -1355,17 +1355,8 @@ static void charactersParsed(void * context, } String * modifiedString; modifiedString = new String((const char *) ch, len); - modifiedString->replaceOccurrencesOfString(MCSTR("\n"), MCSTR(" ")); - modifiedString->replaceOccurrencesOfString(MCSTR("\r"), MCSTR(" ")); - modifiedString->replaceOccurrencesOfString(MCSTR("\t"), MCSTR(" ")); - - UChar specialCh[2]; - specialCh[0] = 133; - specialCh[1] = 0; - modifiedString->replaceOccurrencesOfString(String::stringWithCharacters(specialCh), MCSTR(" ")); - - while (modifiedString->replaceOccurrencesOfString(MCSTR(" "), MCSTR(" ")) > 0) { - } + modifiedString->autorelease(); + modifiedString = modifiedString->stripWhitespace(); if (modifiedString->length() > 0) { if (state->lastCharIsWhitespace) { @@ -1413,7 +1404,6 @@ static void charactersParsed(void * context, state->hasText = true; } } - modifiedString->release(); } /* GCS: custom error function to ignore errors */ @@ -1830,6 +1820,13 @@ String * String::stripWhitespace() str->replaceOccurrencesOfString(MCSTR("\v"), MCSTR(" ")); str->replaceOccurrencesOfString(MCSTR("\f"), MCSTR(" ")); str->replaceOccurrencesOfString(MCSTR("\r"), MCSTR(" ")); + UChar ch[2]; + ch[0] = 160; + ch[1] = 0; + str->replaceOccurrencesOfString(String::stringWithCharacters(ch), MCSTR(" ")); + ch[0] = 133; + ch[1] = 0; + str->replaceOccurrencesOfString(String::stringWithCharacters(ch), MCSTR(" ")); while (str->replaceOccurrencesOfString(MCSTR(" "), MCSTR(" ")) > 0) { /* do nothing */ @@ -1863,6 +1860,8 @@ bool String::hasPrefix(String * prefix) String * String::lastPathComponent() { // TODO: Improve Windows compatibility. + if (mUnicodeChars == NULL) + return MCSTR(""); UChar * component = u_strrchr(mUnicodeChars, '/'); if (component == NULL) return (String *) this->copy()->autorelease(); diff --git a/src/core/imap/MCIMAPMessage.cc b/src/core/imap/MCIMAPMessage.cc index 6cb1472c..7f393f32 100644 --- a/src/core/imap/MCIMAPMessage.cc +++ b/src/core/imap/MCIMAPMessage.cc @@ -16,6 +16,7 @@ static AbstractPart * partForPartIDInMessagePart(AbstractMessagePart * part, Str void IMAPMessage::init() { mUid = 0; + mSequenceNumber = 0; mFlags = MessageFlagNone; mOriginalFlags = MessageFlagNone; mCustomFlags = NULL; @@ -35,6 +36,7 @@ IMAPMessage::IMAPMessage(IMAPMessage * other) : AbstractMessage(other) { init(); setUid(other->uid()); + setSequenceNumber(other->sequenceNumber()); setFlags(other->flags()); setOriginalFlags(other->originalFlags()); setCustomFlags(other->customFlags()); @@ -59,7 +61,7 @@ Object * IMAPMessage::copy() String * IMAPMessage::description() { String * result = String::string(); - result->appendUTF8Format("<%s:%p %u\n", className()->UTF8Characters(), this, (unsigned int) uid()); + result->appendUTF8Format("<%s:%p %u %u\n", className()->UTF8Characters(), this, (unsigned int) uid(), (unsigned int) sequenceNumber()); result->appendString(header()->description()); if (mainPart() != NULL) { result->appendString(mainPart()->description()); @@ -79,6 +81,16 @@ void IMAPMessage::setUid(uint32_t uid) mUid = uid; } +uint32_t IMAPMessage::sequenceNumber() +{ + return mSequenceNumber; +} + +void IMAPMessage::setSequenceNumber(uint32_t value) +{ + mSequenceNumber = value; +} + uint32_t IMAPMessage::size() { return mSize; @@ -235,6 +247,7 @@ String * IMAPMessage::htmlRendering(String * folder, HashMap * IMAPMessage::serializable() { + // sequenceNumber is not serialized. HashMap * result = AbstractMessage::serializable(); result->setObjectForKey(MCSTR("modSeqValue"), String::stringWithUTF8Format("%llu", (long long unsigned) modSeqValue())); result->setObjectForKey(MCSTR("uid"), String::stringWithUTF8Format("%lu", (long unsigned) uid())); @@ -261,6 +274,7 @@ HashMap * IMAPMessage::serializable() void IMAPMessage::importSerializable(HashMap * serializable) { + // sequenceNumber is not serialized. AbstractMessage::importSerializable(serializable); String * modSeq = (String *) serializable->objectForKey(MCSTR("modSeqValue")); if (modSeq != NULL) { diff --git a/src/core/imap/MCIMAPMessage.h b/src/core/imap/MCIMAPMessage.h index a78a04d6..b5266719 100644 --- a/src/core/imap/MCIMAPMessage.h +++ b/src/core/imap/MCIMAPMessage.h @@ -20,6 +20,9 @@ namespace mailcore { IMAPMessage(); virtual ~IMAPMessage(); + virtual uint32_t sequenceNumber(); + virtual void setSequenceNumber(uint32_t sequenceNumber); + virtual uint32_t uid(); virtual void setUid(uint32_t uid); @@ -70,6 +73,7 @@ namespace mailcore { uint64_t mModSeqValue; uint32_t mUid; uint32_t mSize; + uint32_t mSequenceNumber; // not serialized. MessageFlag mFlags; MessageFlag mOriginalFlags; diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc index cd3ccc2d..b3467e59 100644 --- a/src/core/imap/MCIMAPSearchExpression.cc +++ b/src/core/imap/MCIMAPSearchExpression.cc @@ -154,6 +154,14 @@ IMAPSearchExpression * IMAPSearchExpression::searchContent(String * value) return (IMAPSearchExpression *) expr->autorelease(); } +IMAPSearchExpression * IMAPSearchExpression::searchBody(String * value) +{ + IMAPSearchExpression * expr = new IMAPSearchExpression(); + expr->mKind = IMAPSearchKindBody; + MC_SAFE_REPLACE_COPY(String, expr->mValue, value); + return (IMAPSearchExpression *) expr->autorelease(); +} + IMAPSearchExpression * IMAPSearchExpression::searchUIDs(IndexSet * uids) { IMAPSearchExpression * expr = new IMAPSearchExpression(); diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h index a0647216..a6e4833b 100644 --- a/src/core/imap/MCIMAPSearchExpression.h +++ b/src/core/imap/MCIMAPSearchExpression.h @@ -33,6 +33,7 @@ namespace mailcore { static IMAPSearchExpression * searchRecipient(String * value); static IMAPSearchExpression * searchSubject(String * value); static IMAPSearchExpression * searchContent(String * value); + static IMAPSearchExpression * searchBody(String * value); static IMAPSearchExpression * searchHeader(String * header, String * value); static IMAPSearchExpression * searchUIDs(IndexSet * uids); static IMAPSearchExpression * searchRead(); diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index a2fe5c9e..50602842 100755 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -237,59 +237,6 @@ static Array * arrayFromSet(struct mailimap_set * imap_set) return result; } -#if 0 -static int compareValuesUnsignedLong(void * value1, void * value2, void * context) -{ - Value * concreteValue1 = (Value *) value1; - Value * concreteValue2 = (Value *) value2; - - if (concreteValue2->unsignedLongValue() > concreteValue1->unsignedLongValue()) { - return 1; - } - else if (concreteValue2->unsignedLongValue() < concreteValue1->unsignedLongValue()) { - return -1; - } - else { - return 0; - } -} - -static struct mailimap_set * setFromArray(Array * array) -{ - unsigned int currentIndex = 0; - unsigned int currentFirst = 0; - unsigned int currentValue = 0; - unsigned int lastValue = 0; - struct mailimap_set * imap_set; - - array = array->sortedArray(compareValuesUnsignedLong, NULL); - imap_set = mailimap_set_new_empty(); - - while (currentIndex < array->count()) { - currentValue = (unsigned int) ((Value *) array->objectAtIndex(currentIndex))->unsignedLongValue(); - if (currentFirst == 0) { - currentFirst = currentValue; - } - - if ((lastValue != 0) && (currentValue != lastValue + 1)) { - mailimap_set_add_interval(imap_set, currentFirst, lastValue); - currentFirst = 0; - lastValue = 0; - } - else { - lastValue = currentValue; - currentIndex ++; - } - } - if (currentFirst != 0) { - mailimap_set_add_interval(imap_set, currentFirst, lastValue); - } - - return imap_set; -} - -#endif - static clist * splitSet(struct mailimap_set * set, unsigned int splitCount) { struct mailimap_set * current_set; @@ -378,6 +325,7 @@ void IMAPSession::init() mNamespaceEnabled = false; mCompressionEnabled = false; mIsGmail = false; + mAllowsNewPermanentFlags = false; mWelcomeString = NULL; mNeedsMboxMailWorkaround = false; mDefaultNamespace = NULL; @@ -870,6 +818,9 @@ void IMAPSession::login(ErrorCode * pError) else if (response->locationOfString(MCSTR("Maximum number of connections")) != -1) { * pError = ErrorGmailTooManySimultaneousConnections; } + else if (response->locationOfString(MCSTR("Application-specific password required")) != -1) { + * pError = ErrorGmailApplicationSpecificPasswordRequired; + } else if (response->locationOfString(MCSTR("http://me.com/move")) != -1) { * pError = ErrorMobileMeMoved; } @@ -1077,7 +1028,20 @@ void IMAPSession::select(String * folder, ErrorCode * pError) mFirstUnseenUid = 0; } - + if (mImap->imap_selection_info->sel_perm_flags) { + clistiter * cur; + + struct mailimap_flag_perm * perm_flag; + for(cur = clist_end(mImap->imap_selection_info->sel_perm_flags) ; cur != NULL ; + cur = clist_previous(cur)) { + perm_flag = (struct mailimap_flag_perm *)clist_content(cur); + mAllowsNewPermanentFlags = perm_flag->fl_type == MAILIMAP_FLAG_PERM_ALL; + if (mAllowsNewPermanentFlags) { + break; + } + } + } + mModSequenceValue = get_mod_sequence_value(mImap); } @@ -1761,7 +1725,7 @@ void IMAPSession::expunge(String * folder, ErrorCode * pError) } static int -fetch_imap(mailimap * imap, uint32_t uid, +fetch_imap(mailimap * imap, bool identifier_is_uid, uint32_t identifier, struct mailimap_fetch_type * fetch_type, char ** result, size_t * result_len) { @@ -1774,8 +1738,13 @@ fetch_imap(mailimap * imap, uint32_t uid, size_t text_length; clistiter * cur; - set = mailimap_set_new_single(uid); - r = mailimap_uid_fetch(imap, set, fetch_type, &fetch_result); + set = mailimap_set_new_single(identifier); + if (identifier_is_uid) { + r = mailimap_uid_fetch(imap, set, fetch_type, &fetch_result); + } + else { + r = mailimap_fetch(imap, set, fetch_type, &fetch_result); + } mailimap_set_free(set); @@ -1786,7 +1755,7 @@ fetch_imap(mailimap * imap, uint32_t uid, return r; } - if (clist_begin(fetch_result) == NULL) { + if (clist_isempty(fetch_result)) { mailimap_fetch_list_free(fetch_result); return MAILIMAP_ERROR_FETCH; } @@ -1800,16 +1769,18 @@ fetch_imap(mailimap * imap, uint32_t uid, cur = clist_next(cur)) { msg_att_item = (struct mailimap_msg_att_item *) clist_content(cur); - if (msg_att_item->att_type == MAILIMAP_MSG_ATT_ITEM_STATIC) { - - if (msg_att_item->att_data.att_static->att_type == - MAILIMAP_MSG_ATT_BODY_SECTION) { - text = msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part; - msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part = NULL; - text_length = - msg_att_item->att_data.att_static->att_data.att_body_section->sec_length; - } + if (msg_att_item->att_type != MAILIMAP_MSG_ATT_ITEM_STATIC) { + continue; } + + if (msg_att_item->att_data.att_static->att_type != + MAILIMAP_MSG_ATT_BODY_SECTION) { + continue; + } + + text = msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part; + msg_att_item->att_data.att_static->att_data.att_body_section->sec_body_part = NULL; + text_length = msg_att_item->att_data.att_static->att_data.att_body_section->sec_length; } mailimap_fetch_list_free(fetch_result); @@ -1978,6 +1949,7 @@ static void msg_att_handler(struct mailimap_msg_att * msg_att, void * context) if (mapping != NULL) { uid = (uint32_t) ((Value *) mapping->objectForKey(Value::valueWithUnsignedLongValue(msg_att->att_number)))->longLongValue(); } + msg->setSequenceNumber(msg_att->att_number); for(item_iter = clist_begin(msg_att->att_list) ; item_iter != NULL ; item_iter = clist_next(item_iter)) { struct mailimap_msg_att_item * att_item; @@ -2469,9 +2441,23 @@ Array * IMAPSession::fetchMessagesByNumberWithExtraHeaders(String * folder, IMAP return result; } -static int fetch_rfc822(mailimap * session, - uint32_t msgid, char ** result) +static int fetch_rfc822(mailimap * session, bool identifier_is_uid, + uint32_t identifier, char ** result, size_t * result_len) { + struct mailimap_section * section; + struct mailimap_fetch_att * fetch_att; + struct mailimap_fetch_type * fetch_type; + + section = mailimap_section_new(NULL); + fetch_att = mailimap_fetch_att_new_body_peek_section(section); + fetch_type = mailimap_fetch_type_new_fetch_att(fetch_att); + int r = fetch_imap(session, identifier_is_uid, identifier, + fetch_type, result, result_len); + mailimap_fetch_type_free(fetch_type); + + return r; + +#if 0 int r; clist * fetch_list; struct mailimap_section * section; @@ -2487,9 +2473,14 @@ static int fetch_rfc822(mailimap * session, fetch_att = mailimap_fetch_att_new_body_peek_section(section); fetch_type = mailimap_fetch_type_new_fetch_att(fetch_att); - set = mailimap_set_new_single(msgid); + set = mailimap_set_new_single(identifier); - r = mailimap_uid_fetch(session, set, fetch_type, &fetch_list); + if (identifier_is_uid) { + r = mailimap_uid_fetch(session, set, fetch_type, &fetch_list); + } + else { + r = mailimap_fetch(session, set, fetch_type, &fetch_list); + } mailimap_set_free(set); mailimap_fetch_type_free(fetch_type); @@ -2529,27 +2520,41 @@ free: mailimap_fetch_list_free(fetch_list); err: return res; +#endif } Data * IMAPSession::fetchMessageByUID(String * folder, uint32_t uid, IMAPProgressCallback * progressCallback, ErrorCode * pError) { + return fetchMessage(folder, true, uid, progressCallback, pError); +} + +Data * IMAPSession::fetchMessageByNumber(String * folder, uint32_t number, + IMAPProgressCallback * progressCallback, ErrorCode * pError) +{ + return fetchMessage(folder, false, number, progressCallback, pError); +} + +Data * IMAPSession::fetchMessage(String * folder, bool identifier_is_uid, uint32_t identifier, + IMAPProgressCallback * progressCallback, ErrorCode * pError) +{ char * rfc822; + size_t rfc822_len; int r; Data * data; - + selectIfNeeded(folder, pError); if (* pError != ErrorNone) return NULL; - + mProgressItemsCount = 0; mProgressCallback = progressCallback; - + rfc822 = NULL; - r = fetch_rfc822(mImap, uid, &rfc822); + r = fetch_rfc822(mImap, identifier_is_uid, identifier, &rfc822, &rfc822_len); if (r == MAILIMAP_NO_ERROR) { size_t len; - + len = 0; if (rfc822 != NULL) { len = strlen(rfc822); @@ -2557,7 +2562,7 @@ Data * IMAPSession::fetchMessageByUID(String * folder, uint32_t uid, bodyProgress((unsigned int) len, (unsigned int) len); } mProgressCallback = NULL; - + if (r == MAILIMAP_ERROR_STREAM) { mShouldDisconnect = true; * pError = ErrorConnection; @@ -2571,22 +2576,23 @@ Data * IMAPSession::fetchMessageByUID(String * folder, uint32_t uid, * pError = ErrorFetch; return NULL; } - + if (rfc822 == NULL) { data = Data::data(); } else { - data = Data::dataWithBytes(rfc822, (unsigned int) strlen(rfc822)); + data = Data::dataWithBytes(rfc822, (unsigned int) rfc822_len); } - + mailimap_nstring_free(rfc822); * pError = ErrorNone; - + return data; } -Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID, - Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError) +Data * IMAPSession::fetchMessageAttachment(String * folder, bool identifier_is_uid, + uint32_t identifier, String * partID, + Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError) { struct mailimap_fetch_type * fetch_type; struct mailimap_fetch_att * fetch_att; @@ -2623,7 +2629,7 @@ Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, S fetch_att = mailimap_fetch_att_new_body_peek_section(section); fetch_type = mailimap_fetch_type_new_fetch_att(fetch_att); - r = fetch_imap(mImap, uid, fetch_type, &text, &text_length); + r = fetch_imap(mImap, identifier_is_uid, identifier, fetch_type, &text, &text_length); mailimap_fetch_type_free(fetch_type); mProgressCallback = NULL; @@ -2652,6 +2658,18 @@ Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, S return data; } +Data * IMAPSession::fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID, + Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError) +{ + return fetchMessageAttachment(folder, true, uid, partID, encoding, progressCallback, pError); +} + +Data * IMAPSession::fetchMessageAttachmentByNumber(String * folder, uint32_t number, String * partID, + Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError) +{ + return fetchMessageAttachment(folder, false, number, partID, encoding, progressCallback, pError); +} + IndexSet * IMAPSession::search(String * folder, IMAPSearchKind kind, String * searchString, ErrorCode * pError) { IMAPSearchExpression * expr; @@ -2755,6 +2773,10 @@ static struct mailimap_search_key * searchKeyFromSearchExpression(IMAPSearchExpr { return mailimap_search_key_new_text(strdup(expression->value()->UTF8Characters())); } + case IMAPSearchKindBody: + { + return mailimap_search_key_new_body(strdup(expression->value()->UTF8Characters())); + } case IMAPSearchKindUIDs: { return mailimap_search_key_new_uid(setFromIndexSet(expression->uids())); @@ -2947,7 +2969,14 @@ IndexSet * IMAPSession::search(String * folder, IMAPSearchExpression * expressio if (mYahooServer) { charset = NULL; } - int r = mailimap_uid_search(mImap, charset, key, &result_list); + + int r; + if (mIsGmail) { + r = mailimap_uid_search_literalplus(mImap, charset, key, &result_list); + } + else { + r = mailimap_uid_search(mImap, charset, key, &result_list); + } mailimap_search_key_free(key); MCLog("had error : %i", r); if (r == MAILIMAP_ERROR_STREAM) { @@ -3280,12 +3309,18 @@ HashMap * IMAPSession::fetchNamespace(ErrorCode * pError) return result; } -void IMAPSession::storeFlags(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, ErrorCode * pError) +void IMAPSession::storeFlagsByUID(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, ErrorCode * pError) { - this->storeFlagsAndCustomFlags(folder, uids, kind, flags, NULL, pError); + this->storeFlagsAndCustomFlagsByUID(folder, uids, kind, flags, NULL, pError); } -void IMAPSession::storeFlagsAndCustomFlags(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError) +void IMAPSession::storeFlagsAndCustomFlagsByUID(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError) +{ + storeFlagsAndCustomFlags(folder, true, uids, kind, flags, customFlags, pError); +} + +void IMAPSession::storeFlagsAndCustomFlags(String * folder, bool identifier_is_uid, IndexSet * identifiers, + IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError) { struct mailimap_set * imap_set; struct mailimap_store_att_flags * store_att_flags; @@ -3297,7 +3332,7 @@ void IMAPSession::storeFlagsAndCustomFlags(String * folder, IndexSet * uids, IMA if (* pError != ErrorNone) return; - imap_set = setFromIndexSet(uids); + imap_set = setFromIndexSet(identifiers); if (clist_count(imap_set->set_list) == 0) { mailimap_set_free(imap_set); return; @@ -3388,7 +3423,12 @@ void IMAPSession::storeFlagsAndCustomFlags(String * folder, IndexSet * uids, IMA store_att_flags = mailimap_store_att_flags_new_set_flags_silent(flag_list); break; } - r = mailimap_uid_store(mImap, current_set, store_att_flags); + if (identifier_is_uid) { + r = mailimap_uid_store(mImap, current_set, store_att_flags); + } + else { + r = mailimap_store(mImap, current_set, store_att_flags); + } if (r == MAILIMAP_ERROR_STREAM) { mShouldDisconnect = true; @@ -3418,7 +3458,27 @@ void IMAPSession::storeFlagsAndCustomFlags(String * folder, IndexSet * uids, IMA * pError = ErrorNone; } -void IMAPSession::storeLabels(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError) +void IMAPSession::storeFlagsByNumber(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, MessageFlag flags, ErrorCode * pError) +{ + this->storeFlagsAndCustomFlagsByNumber(folder, numbers, kind, flags, NULL, pError); +} + +void IMAPSession::storeFlagsAndCustomFlagsByNumber(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError) +{ + storeFlagsAndCustomFlags(folder, false, numbers, kind, flags, customFlags, pError); +} + +void IMAPSession::storeLabelsByUID(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError) +{ + storeLabels(folder, true, uids, kind, labels, pError); +} + +void IMAPSession::storeLabelsByNumber(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError) +{ + storeLabels(folder, false, numbers, kind, labels, pError); +} + +void IMAPSession::storeLabels(String * folder, bool identifier_is_uid, IndexSet * identifiers, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError) { struct mailimap_set * imap_set; struct mailimap_msg_att_xgmlabels * xgmlabels; @@ -3429,7 +3489,7 @@ void IMAPSession::storeLabels(String * folder, IndexSet * uids, IMAPStoreFlagsRe if (* pError != ErrorNone) return; - imap_set = setFromIndexSet(uids); + imap_set = setFromIndexSet(identifiers); if (clist_count(imap_set->set_list) == 0) { mailimap_set_free(imap_set); return; @@ -3460,7 +3520,12 @@ void IMAPSession::storeLabels(String * folder, IndexSet * uids, IMAPStoreFlagsRe fl_sign = 0; break; } - r = mailimap_uid_store_xgmlabels(mImap, current_set, fl_sign, 1, xgmlabels); + if (identifier_is_uid) { + r = mailimap_uid_store_xgmlabels(mImap, current_set, fl_sign, 1, xgmlabels); + } + else { + r = mailimap_store_xgmlabels(mImap, current_set, fl_sign, 1, xgmlabels); + } if (r == MAILIMAP_ERROR_STREAM) { mShouldDisconnect = true; * pError = ErrorConnection; @@ -3694,6 +3759,10 @@ bool IMAPSession::isCompressionEnabled() return mCompressionEnabled; } +bool IMAPSession::allowsNewPermanentFlags() { + return mAllowsNewPermanentFlags; +} + bool IMAPSession::isDisconnected() { return mState == STATE_DISCONNECTED; diff --git a/src/core/imap/MCIMAPSession.h b/src/core/imap/MCIMAPSession.h index e52dc74f..591466fc 100755 --- a/src/core/imap/MCIMAPSession.h +++ b/src/core/imap/MCIMAPSession.h @@ -110,8 +110,12 @@ namespace mailcore { virtual Data * fetchMessageByUID(String * folder, uint32_t uid, IMAPProgressCallback * progressCallback, ErrorCode * pError); + virtual Data * fetchMessageByNumber(String * folder, uint32_t number, + IMAPProgressCallback * progressCallback, ErrorCode * pError); virtual Data * fetchMessageAttachmentByUID(String * folder, uint32_t uid, String * partID, Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError); + virtual Data * fetchMessageAttachmentByNumber(String * folder, uint32_t number, String * partID, + Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError); virtual HashMap * fetchMessageNumberUIDMapping(String * folder, uint32_t fromUID, uint32_t toUID, ErrorCode * pError); @@ -125,9 +129,13 @@ namespace mailcore { IMAPProgressCallback * progressCallback, Array * extraHeaders, ErrorCode * pError); - virtual void storeFlags(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, ErrorCode * pError); - virtual void storeFlagsAndCustomFlags(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError); - virtual void storeLabels(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError); + virtual void storeFlagsByUID(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, ErrorCode * pError); + virtual void storeFlagsAndCustomFlagsByUID(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError); + virtual void storeFlagsByNumber(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, MessageFlag flags, ErrorCode * pError); + virtual void storeFlagsAndCustomFlagsByNumber(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError); + + virtual void storeLabelsByUID(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError); + virtual void storeLabelsByNumber(String * folder, IndexSet * numbers, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError); virtual IndexSet * search(String * folder, IMAPSearchKind kind, String * searchString, ErrorCode * pError); virtual IndexSet * search(String * folder, IMAPSearchExpression * expression, ErrorCode * pError); @@ -167,7 +175,8 @@ namespace mailcore { virtual bool isXOAuthEnabled(); virtual bool isNamespaceEnabled(); virtual bool isCompressionEnabled(); - + virtual bool allowsNewPermanentFlags(); + virtual String * gmailUserDisplayName(); virtual void setConnectionLogger(ConnectionLogger * logger); @@ -227,6 +236,7 @@ namespace mailcore { bool mNamespaceEnabled; bool mCompressionEnabled; bool mIsGmail; + bool mAllowsNewPermanentFlags; String * mWelcomeString; bool mNeedsMboxMailWorkaround; uint32_t mUIDValidity; @@ -268,6 +278,14 @@ namespace mailcore { void capabilitySetWithSessionState(IndexSet * capabilities); bool enableFeature(String * feature); void enableFeatures(); + Data * fetchMessage(String * folder, bool identifier_is_uid, uint32_t identifier, + IMAPProgressCallback * progressCallback, ErrorCode * pError); + void storeFlagsAndCustomFlags(String * folder, bool identifier_is_uid, IndexSet * identifiers, + IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags, ErrorCode * pError); + Data * fetchMessageAttachment(String * folder, bool identifier_is_uid, + uint32_t identifier, String * partID, + Encoding encoding, IMAPProgressCallback * progressCallback, ErrorCode * pError); + void storeLabels(String * folder, bool identifier_is_uid, IndexSet * identifiers, IMAPStoreFlagsRequestKind kind, Array * labels, ErrorCode * pError); }; } diff --git a/src/core/pop/MCPOPSession.cc b/src/core/pop/MCPOPSession.cc index 0d26682e..b703f16d 100644 --- a/src/core/pop/MCPOPSession.cc +++ b/src/core/pop/MCPOPSession.cc @@ -241,7 +241,7 @@ void POPSession::connect(ErrorCode * pError) default: r = mailpop3_socket_connect(mPop, MCUTF8(hostname()), port()); - if (r != MAILIMAP_NO_ERROR) { + if (r != MAILPOP3_NO_ERROR) { * pError = ErrorConnection; return; } diff --git a/src/core/renderer/MCDateFormatter.cc b/src/core/renderer/MCDateFormatter.cc index 2882977d..96d347d5 100644 --- a/src/core/renderer/MCDateFormatter.cc +++ b/src/core/renderer/MCDateFormatter.cc @@ -216,6 +216,12 @@ void DateFormatter::prepare() localeRef = CFLocaleCopyCurrent(); } mAppleDateFormatter = CFDateFormatterCreate(NULL, localeRef, toAppleStyle(mDateStyle), toAppleStyle(mTimeStyle)); + if (mDateFormat != NULL) { + CFStringRef dateFormatCFString = CFStringCreateWithCharacters(NULL, (const UniChar *) mDateFormat->unicodeCharacters(), + mDateFormat->length()); + CFDateFormatterSetFormat((CFDateFormatterRef) mAppleDateFormatter, dateFormatCFString); + CFRelease(dateFormatCFString); + } if (localeIdentifier != NULL) { CFRelease(localeIdentifier); } diff --git a/src/core/rfc822/MCAttachment.cc b/src/core/rfc822/MCAttachment.cc index 172881cb..63551b6a 100644 --- a/src/core/rfc822/MCAttachment.cc +++ b/src/core/rfc822/MCAttachment.cc @@ -87,6 +87,9 @@ HashMap * Attachment::readMimeTypesFile(String * filename) String * Attachment::mimeTypeForFilename(String * filename) { + if (filename == NULL) { + return NULL; + } static HashMap * mimeTypes = NULL; static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_lock(&lock); @@ -211,8 +214,6 @@ Attachment * Attachment::attachmentWithText(String * text) void Attachment::init() { mData = NULL; - mContentTypeParameters = NULL; - mlcContentTypeParameters = NULL; setMimeType(MCSTR("application/octet-stream")); } @@ -225,14 +226,11 @@ Attachment::Attachment(Attachment * other) : AbstractPart(other) { init(); MC_SAFE_REPLACE_RETAIN(Data, mData, other->mData); - setContentTypeParameters(other->mContentTypeParameters); } Attachment::~Attachment() { MC_SAFE_RELEASE(mData); - MC_SAFE_RELEASE(mContentTypeParameters); - MC_SAFE_RELEASE(mlcContentTypeParameters); } String * Attachment::description() @@ -261,11 +259,6 @@ String * Attachment::description() else { result->appendUTF8Format("no data\n"); } - if (mContentTypeParameters != NULL) { - mc_foreachhashmapKeyAndValue(String, key, String, value, mContentTypeParameters) { - result->appendUTF8Format("%s: %s\n", key->UTF8Characters(), value->UTF8Characters()); - } - } result->appendUTF8Format(">"); return result; @@ -296,56 +289,6 @@ String * Attachment::decodedString() } } -void Attachment::setContentTypeParameters(HashMap * parameters) -{ - MC_SAFE_REPLACE_COPY(HashMap, mContentTypeParameters, parameters); - MC_SAFE_RELEASE(mlcContentTypeParameters); - if (mContentTypeParameters != NULL) { - mlcContentTypeParameters = new HashMap(); - mc_foreachhashmapKeyAndValue(String, key, String, value, mContentTypeParameters) { - mlcContentTypeParameters->setObjectForKey(key->lowercaseString(), value); - } - } -} - -Array * Attachment::allContentTypeParametersNames() -{ - if (mContentTypeParameters == NULL) - return Array::array(); - return mContentTypeParameters->allKeys(); -} - -void Attachment::setContentTypeParameter(String * name, String * object) -{ - if (mContentTypeParameters == NULL) { - mContentTypeParameters = new HashMap(); - } - if (mlcContentTypeParameters == NULL) { - mlcContentTypeParameters = new HashMap(); - } - if (object == NULL) { - removeContentTypeParameter(name); - return; - } - mContentTypeParameters->setObjectForKey(name, object); - mlcContentTypeParameters->setObjectForKey(name->lowercaseString(), object); -} - -void Attachment::removeContentTypeParameter(String * name) -{ - if (mContentTypeParameters == NULL) - return; - mContentTypeParameters->removeObjectForKey(name); - mlcContentTypeParameters->removeObjectForKey(name); -} - -String * Attachment::contentTypeParameterValueForName(String * name) -{ - if (mlcContentTypeParameters == NULL) - return NULL; - return (String *) mlcContentTypeParameters->objectForKey(name->lowercaseString()); -} - AbstractPart * Attachment::attachmentsWithMIME(struct mailmime * mime) { return attachmentsWithMIMEWithMain(mime, true); diff --git a/src/core/rfc822/MCAttachment.h b/src/core/rfc822/MCAttachment.h index 069688f2..2217bc4c 100644 --- a/src/core/rfc822/MCAttachment.h +++ b/src/core/rfc822/MCAttachment.h @@ -29,11 +29,6 @@ namespace mailcore { virtual Data * data(); virtual String * decodedString(); - virtual void setContentTypeParameter(String * name, String * value); - virtual void removeContentTypeParameter(String * name); - virtual String * contentTypeParameterValueForName(String *name); - virtual Array * allContentTypeParametersNames(); - public: // subclass behavior Attachment(Attachment * other); virtual String * description(); @@ -44,8 +39,6 @@ namespace mailcore { private: Data * mData; - HashMap * mContentTypeParameters; - HashMap * mlcContentTypeParameters; void init(); static void fillMultipartSubAttachments(AbstractMultipart * multipart, struct mailmime * mime); static AbstractPart * attachmentsWithMIMEWithMain(struct mailmime * mime, bool isMain); diff --git a/src/core/rfc822/MCMessageBuilder.cc b/src/core/rfc822/MCMessageBuilder.cc index 3e63ce4a..0ffe0819 100644 --- a/src/core/rfc822/MCMessageBuilder.cc +++ b/src/core/rfc822/MCMessageBuilder.cc @@ -12,32 +12,54 @@ using namespace mailcore; static char * generate_boundary(const char * boundary_prefix); -struct mailmime * part_multiple_new(const char * type, const char * boundary_prefix); +struct mailmime * part_multiple_new(MessageBuilder * builder, const char * type, const char * boundary_prefix); static struct mailmime * -part_new_empty(struct mailmime_content * content, +part_new_empty(MessageBuilder * builder, struct mailmime_content * content, struct mailmime_fields * mime_fields, const char * boundary_prefix, int force_single); -static struct mailmime * get_multipart_alternative(const char * boundary_prefix) +static struct mailmime * get_multipart_alternative(MessageBuilder * builder, const char * boundary_prefix) { struct mailmime * mime; - mime = part_multiple_new("multipart/alternative", boundary_prefix); + mime = part_multiple_new(builder, "multipart/alternative", boundary_prefix); return mime; } -static struct mailmime * get_multipart_related(const char * boundary_prefix) +static struct mailmime * get_multipart_related(MessageBuilder * builder, const char * boundary_prefix) { struct mailmime * mime; - mime = part_multiple_new("multipart/related", boundary_prefix); + mime = part_multiple_new(builder, "multipart/related", boundary_prefix); return mime; } -static int add_attachment(struct mailmime * mime, +static struct mailmime * get_multipart_signed_pgp(MessageBuilder * builder, const char * boundary_prefix) +{ + struct mailmime * mime; + + mime = part_multiple_new(builder, "multipart/signed", boundary_prefix); + struct mailmime_parameter * param = mailmime_param_new_with_data((char *) "protocol", (char *) "application/pgp-signature"); + clist_append(mime->mm_content_type->ct_parameters, param); + + return mime; +} + +static struct mailmime * get_multipart_encrypted_pgp(MessageBuilder * builder, const char * boundary_prefix) +{ + struct mailmime * mime; + + mime = part_multiple_new(builder, "multipart/encrypted", boundary_prefix); + struct mailmime_parameter * param = mailmime_param_new_with_data((char *) "protocol", (char *) "application/pgp-encrypted"); + clist_append(mime->mm_content_type->ct_parameters, param); + + return mime; +} + +static int add_attachment(MessageBuilder * builder, struct mailmime * mime, struct mailmime * mime_sub, const char * boundary_prefix) { @@ -88,7 +110,7 @@ static int add_attachment(struct mailmime * mime, /* create a multipart */ - mp = part_multiple_new("multipart/mixed", boundary_prefix); + mp = part_multiple_new(builder, "multipart/mixed", boundary_prefix); if (mp == NULL) { res = MAILIMF_ERROR_MEMORY; goto err; @@ -132,7 +154,8 @@ err: return res; } -static struct mailmime * get_text_part(const char * mime_type, const char * charset, const char * content_id, +static struct mailmime * get_text_part(MessageBuilder * builder, + const char * mime_type, const char * charset, const char * content_id, const char * description, const char * text, size_t length, int encoding_type, clist * contentTypeParameters) { @@ -169,23 +192,30 @@ static struct mailmime * get_text_part(const char * mime_type, const char * char clist_concat(content->ct_parameters, contentTypeParameters); } - mime = part_new_empty(content, mime_fields, NULL, 1); + mime = part_new_empty(builder, content, mime_fields, NULL, 1); mailmime_set_body_text(mime, (char *) text, length); return mime; } -static struct mailmime * get_plain_text_part(const char * mime_type, const char * charset, const char * content_id, +static struct mailmime * get_plain_text_part(MessageBuilder * builder, + const char * mime_type, const char * charset, const char * content_id, const char * description, - const char * text, size_t length, clist * contentTypeParameters) + const char * text, size_t length, clist * contentTypeParameters, bool forEncryption) { bool needsQuotedPrintable; int mechanism; needsQuotedPrintable = false; - for(size_t i = 0 ; i < length ; i ++) { - if ((text[i] & (1 << 7)) != 0) { - needsQuotedPrintable = true; + if (forEncryption) { + needsQuotedPrintable = true; + } + if (!needsQuotedPrintable) { + for(size_t i = 0 ; i < length ; i ++) { + if ((text[i] & (1 << 7)) != 0) { + needsQuotedPrintable = true; + break; + } } } @@ -193,17 +223,19 @@ static struct mailmime * get_plain_text_part(const char * mime_type, const char if (needsQuotedPrintable) { mechanism = MAILMIME_MECHANISM_QUOTED_PRINTABLE; } - return get_text_part(mime_type, charset, content_id, description, text, length, mechanism, contentTypeParameters); + return get_text_part(builder, mime_type, charset, content_id, description, text, length, mechanism, contentTypeParameters); } -static struct mailmime * get_other_text_part(const char * mime_type, const char * charset, const char * content_id, +static struct mailmime * get_other_text_part(MessageBuilder * builder, + const char * mime_type, const char * charset, const char * content_id, const char * description, const char * text, size_t length, clist * contentTypeParameters) { - return get_text_part(mime_type, charset, content_id, description, text, length, MAILMIME_MECHANISM_QUOTED_PRINTABLE, contentTypeParameters); + return get_text_part(builder, mime_type, charset, content_id, description, text, length, MAILMIME_MECHANISM_QUOTED_PRINTABLE, contentTypeParameters); } -static struct mailmime * get_file_part(const char * filename, const char * mime_type, int is_inline, +static struct mailmime * get_file_part(MessageBuilder * builder, + const char * filename, const char * mime_type, int is_inline, const char * content_id, const char * content_description, const char * text, size_t length, clist * contentTypeParameters) @@ -247,7 +279,7 @@ static struct mailmime * get_file_part(const char * filename, const char * mime_ clist_concat(content->ct_parameters, contentTypeParameters); } - mime = part_new_empty(content, mime_fields, NULL, 1); + mime = part_new_empty(builder, content, mime_fields, NULL, 1); mailmime_set_body_text(mime, (char *) text, length); return mime; @@ -272,7 +304,7 @@ static clist * content_type_parameters_from_attachment(Attachment * att) return contentTypeParameters; } -static struct mailmime * mime_from_attachment(Attachment * att) +static struct mailmime * mime_from_attachment(MessageBuilder * builder, Attachment * att, bool forEncryption) { struct mailmime * mime; Data * data; @@ -291,21 +323,22 @@ static struct mailmime * mime_from_attachment(Attachment * att) else { clist * contentTypeParameters = content_type_parameters_from_attachment(att); if (att->isInlineAttachment() && att->mimeType()->lowercaseString()->isEqual(MCSTR("text/plain"))) { - mime = get_plain_text_part(MCUTF8(att->mimeType()), MCUTF8(att->charset()), + mime = get_plain_text_part(builder, MCUTF8(att->mimeType()), MCUTF8(att->charset()), MCUTF8(att->contentID()), MIME_ENCODED_STR(att->contentDescription()), data->bytes(), data->length(), - contentTypeParameters); + contentTypeParameters, + forEncryption); } else if (att->isInlineAttachment() && att->mimeType()->lowercaseString()->hasPrefix(MCSTR("text/"))) { - mime = get_other_text_part(MCUTF8(att->mimeType()), MCUTF8(att->charset()), + mime = get_other_text_part(builder, MCUTF8(att->mimeType()), MCUTF8(att->charset()), MCUTF8(att->contentID()), MIME_ENCODED_STR(att->contentDescription()), data->bytes(), data->length(), contentTypeParameters); } else { - mime = get_file_part(MIME_ENCODED_STR(att->filename()), + mime = get_file_part(builder, MIME_ENCODED_STR(att->filename()), MCUTF8(att->mimeType()), att->isInlineAttachment(), MCUTF8(att->contentID()), MIME_ENCODED_STR(att->contentDescription()), @@ -319,24 +352,25 @@ static struct mailmime * mime_from_attachment(Attachment * att) return mime; } -static struct mailmime * multipart_related_from_attachments(Attachment * htmlAttachment, - Array * attachments, const char * boundary_prefix) +static struct mailmime * multipart_related_from_attachments(MessageBuilder * builder, + Attachment * htmlAttachment, + Array * attachments, const char * boundary_prefix, bool forEncryption) { if ((attachments != NULL) && (attachments->count() > 0)) { struct mailmime * submime; struct mailmime * mime; - mime = get_multipart_related(boundary_prefix); + mime = get_multipart_related(builder, boundary_prefix); - submime = mime_from_attachment(htmlAttachment); - add_attachment(mime, submime, boundary_prefix); + submime = mime_from_attachment(builder, htmlAttachment, forEncryption); + add_attachment(builder, mime, submime, boundary_prefix); for(unsigned int i = 0 ; i < attachments->count() ; i ++) { Attachment * attachment; attachment = (Attachment *) attachments->objectAtIndex(i); - submime = mime_from_attachment(attachment); - add_attachment(mime, submime, boundary_prefix); + submime = mime_from_attachment(builder, attachment, forEncryption); + add_attachment(builder, mime, submime, boundary_prefix); } return mime; @@ -344,14 +378,14 @@ static struct mailmime * multipart_related_from_attachments(Attachment * htmlAtt else { struct mailmime * mime; - mime = mime_from_attachment(htmlAttachment); + mime = mime_from_attachment(builder, htmlAttachment, forEncryption); return mime; } } static struct mailmime * -part_new_empty(struct mailmime_content * content, +part_new_empty(MessageBuilder * builder, struct mailmime_content * content, struct mailmime_fields * mime_fields, const char * boundary_prefix, int force_single) @@ -410,7 +444,13 @@ part_new_empty(struct mailmime_content * content, if (attr_name == NULL) goto free_list; - boundary = generate_boundary(boundary_prefix); + if (builder != NULL) { + String * boundaryString = builder->nextBoundary(); + boundary = strdup(boundaryString->UTF8Characters()); + } + else { + boundary = generate_boundary(boundary_prefix); + } attr_value = boundary; if (attr_name == NULL) { free(attr_name); @@ -462,7 +502,7 @@ err: return NULL; } -struct mailmime * part_multiple_new(const char * type, const char * boundary_prefix) +struct mailmime * part_multiple_new(MessageBuilder * builder, const char * type, const char * boundary_prefix) { struct mailmime_fields * mime_fields; struct mailmime_content * content; @@ -476,7 +516,7 @@ struct mailmime * part_multiple_new(const char * type, const char * boundary_pre if (content == NULL) goto free_fields; - mp = part_new_empty(content, mime_fields, boundary_prefix, 0); + mp = part_new_empty(builder, content, mime_fields, boundary_prefix, 0); if (mp == NULL) goto free_content; @@ -519,8 +559,10 @@ void MessageBuilder::init() mAttachments = NULL; mRelatedAttachments = NULL; mBoundaryPrefix = NULL; + mBoundaries = new Array(); + mCurrentBoundaryIndex = 0; } - + MessageBuilder::MessageBuilder() { init(); @@ -543,6 +585,7 @@ MessageBuilder::~MessageBuilder() MC_SAFE_RELEASE(mAttachments); MC_SAFE_RELEASE(mRelatedAttachments); MC_SAFE_RELEASE(mBoundaryPrefix); + MC_SAFE_RELEASE(mBoundaries); } String * MessageBuilder::description() @@ -655,45 +698,42 @@ String * MessageBuilder::boundaryPrefix() return mBoundaryPrefix; } -Data * MessageBuilder::dataAndFilterBcc(bool filterBcc) +struct mailmime * MessageBuilder::mimeAndFilterBccAndForEncryption(bool filterBcc, bool forEncryption) { - Data * data; - MMAPString * str; - int col; - struct mailmime * htmlPart; struct mailmime * textPart; struct mailmime * altPart; struct mailmime * mainPart; - + + mCurrentBoundaryIndex = 0; htmlPart = NULL; textPart = NULL; altPart = NULL; mainPart = NULL; - + if (htmlBody() != NULL) { Attachment * htmlAttachment; - + htmlAttachment = Attachment::attachmentWithHTMLString(htmlBody()); - htmlPart = multipart_related_from_attachments(htmlAttachment, mRelatedAttachments, - MCUTF8(mBoundaryPrefix)); + htmlPart = multipart_related_from_attachments(this, htmlAttachment, mRelatedAttachments, + MCUTF8(mBoundaryPrefix), forEncryption); } - + if (textBody() != NULL) { Attachment * textAttachment; - + textAttachment = Attachment::attachmentWithText(textBody()); - textPart = mime_from_attachment(textAttachment); + textPart = mime_from_attachment(this, textAttachment, forEncryption); } else if (htmlBody() != NULL) { Attachment * textAttachment; - + textAttachment = Attachment::attachmentWithText(htmlBody()->flattenHTML()); - textPart = mime_from_attachment(textAttachment); + textPart = mime_from_attachment(this, textAttachment, forEncryption); } - + if ((textPart != NULL) && (htmlPart != NULL)) { - altPart = get_multipart_alternative(MCUTF8(mBoundaryPrefix)); + altPart = get_multipart_alternative(this, MCUTF8(mBoundaryPrefix)); mailmime_smart_add_part(altPart, textPart); mailmime_smart_add_part(altPart, htmlPart); mainPart = altPart; @@ -704,44 +744,66 @@ Data * MessageBuilder::dataAndFilterBcc(bool filterBcc) else if (htmlPart != NULL) { mainPart = htmlPart; } - + struct mailimf_fields * fields; unsigned int i; struct mailmime * mime; - + fields = header()->createIMFFieldsAndFilterBcc(filterBcc); - + mime = mailmime_new_message_data(NULL); mailmime_set_imf_fields(mime, fields); - + if (mainPart != NULL) { - add_attachment(mime, mainPart, MCUTF8(mBoundaryPrefix)); + add_attachment(this, mime, mainPart, MCUTF8(mBoundaryPrefix)); } - + if (attachments() != NULL) { for(i = 0 ; i < attachments()->count() ; i ++) { Attachment * attachment; struct mailmime * submime; - + attachment = (Attachment *) attachments()->objectAtIndex(i); - submime = mime_from_attachment(attachment); - add_attachment(mime, submime, MCUTF8(mBoundaryPrefix)); + submime = mime_from_attachment(this, attachment, forEncryption); + add_attachment(this, mime, submime, MCUTF8(mBoundaryPrefix)); } } + struct mailmime * result = mime; + if (forEncryption) { + result = mime->mm_data.mm_message.mm_msg_mime; + mime->mm_data.mm_message.mm_msg_mime = NULL; + mailmime_free(mime); + } + + return result; +} + +Data * MessageBuilder::dataAndFilterBccAndForEncryption(bool filterBcc, bool forEncryption) +{ + Data * data; + MMAPString * str; + int col; + str = mmap_string_new(""); col = 0; + struct mailmime * mime = mimeAndFilterBccAndForEncryption(filterBcc, forEncryption); mailmime_write_mem(str, &col, mime); data = Data::dataWithBytes(str->str, (unsigned int) str->len); mmap_string_free(str); mailmime_free(mime); - + return data; } Data * MessageBuilder::data() { - return dataAndFilterBcc(false); + return dataAndFilterBccAndForEncryption(false, false); +} + +Data * MessageBuilder::dataForEncryption() +{ + return dataAndFilterBccAndForEncryption(false, true); } String * MessageBuilder::htmlRendering(HTMLRendererTemplateCallback * htmlCallback) @@ -768,3 +830,121 @@ String * MessageBuilder::plainTextBodyRendering(bool stripWhitespace) return message->plainTextBodyRendering(stripWhitespace); } +struct mailmime * get_signature_part(Data * signature) +{ + struct mailmime * mime; + struct mailmime_content * content; + + content = mailmime_content_new_with_str("application/pgp-signature"); + struct mailmime_fields * mime_fields = mailmime_fields_new_empty(); + mime = part_new_empty(NULL, content, mime_fields, NULL, 1); + mailmime_set_body_text(mime, signature->bytes(), signature->length()); + + return mime; +} + +Data * MessageBuilder::openPGPSignedMessageDataWithSignatureData(Data * signature) +{ + struct mailimf_fields * fields; + struct mailmime * mime; + + fields = header()->createIMFFieldsAndFilterBcc(false); + + mime = mailmime_new_message_data(NULL); + mailmime_set_imf_fields(mime, fields); + + struct mailmime * multipart = get_multipart_signed_pgp(NULL, MCUTF8(boundaryPrefix())); + add_attachment(NULL, mime, multipart, MCUTF8(boundaryPrefix())); + struct mailmime * part_to_sign = mimeAndFilterBccAndForEncryption(false, true); + add_attachment(NULL, multipart, part_to_sign, MCUTF8(boundaryPrefix())); + struct mailmime * signature_part = get_signature_part(signature); + add_attachment(NULL, multipart, signature_part, MCUTF8(boundaryPrefix())); + + MMAPString * str = mmap_string_new(""); + int col = 0; + + mailmime_write_mem(str, &col, mime); + Data * data = Data::dataWithBytes(str->str, (unsigned int) str->len); + mmap_string_free(str); + mailmime_free(mime); + + return data; +} + +static struct mailmime * get_pgp_version_part(void) +{ + struct mailmime * mime; + struct mailmime_content * content; + + content = mailmime_content_new_with_str("application/pgp-encrypted"); + struct mailmime_fields * mime_fields = mailmime_fields_new_empty(); + mime = part_new_empty(NULL, content, mime_fields, NULL, 1); + const char * version = "Version: 1\r\n"; + mailmime_set_body_text(mime, (char *) version, strlen(version)); + + return mime; +} + +static struct mailmime * get_encrypted_part(Data * encryptedData) +{ + struct mailmime * mime; + struct mailmime_content * content; + + content = mailmime_content_new_with_str("application/octet-stream"); + struct mailmime_fields * mime_fields = mailmime_fields_new_empty(); + mime = part_new_empty(NULL, content, mime_fields, NULL, 1); + mailmime_set_body_text(mime, encryptedData->bytes(), encryptedData->length()); + + return mime; +} + +Data * MessageBuilder::openPGPEncryptedMessageDataWithEncryptedData(Data * encryptedData) +{ + struct mailimf_fields * fields; + struct mailmime * mime; + + fields = header()->createIMFFieldsAndFilterBcc(false); + + mime = mailmime_new_message_data(NULL); + mailmime_set_imf_fields(mime, fields); + + struct mailmime * multipart = get_multipart_encrypted_pgp(NULL, MCUTF8(boundaryPrefix())); + add_attachment(NULL, mime, multipart, MCUTF8(boundaryPrefix())); + + struct mailmime * version_part = get_pgp_version_part(); + add_attachment(NULL, multipart, version_part, MCUTF8(boundaryPrefix())); + struct mailmime * encrypted_part = get_encrypted_part(encryptedData); + add_attachment(NULL, multipart, encrypted_part, MCUTF8(boundaryPrefix())); + + MMAPString * str = mmap_string_new(""); + int col = 0; + + mailmime_write_mem(str, &col, mime); + Data * data = Data::dataWithBytes(str->str, (unsigned int) str->len); + mmap_string_free(str); + mailmime_free(mime); + + return data; +} + +String * MessageBuilder::nextBoundary() +{ + unsigned int idx = mCurrentBoundaryIndex; + mCurrentBoundaryIndex ++; + if (idx < mBoundaries->count()) { + return (String *) mBoundaries->objectAtIndex(idx); + } + + char * boundary = generate_boundary(MCUTF8(mBoundaryPrefix)); + String * boundaryString = String::stringWithUTF8Characters(boundary); + mBoundaries->addObject(boundaryString); + free(boundary); + + return boundaryString; +} + +void MessageBuilder::resetBoundaries() +{ + mBoundaries->removeAllObjects(); +} + diff --git a/src/core/rfc822/MCMessageBuilder.h b/src/core/rfc822/MCMessageBuilder.h index 413d1a4d..aef594a1 100644 --- a/src/core/rfc822/MCMessageBuilder.h +++ b/src/core/rfc822/MCMessageBuilder.h @@ -39,6 +39,7 @@ namespace mailcore { virtual String * boundaryPrefix(); virtual Data * data(); + virtual Data * dataForEncryption(); virtual String * htmlRendering(HTMLRendererTemplateCallback * htmlCallback = NULL); virtual String * htmlBodyRendering(); @@ -46,11 +47,18 @@ namespace mailcore { virtual String * plainTextRendering(); virtual String * plainTextBodyRendering(bool stripWhitespace); + virtual Data * openPGPSignedMessageDataWithSignatureData(Data * signature); + virtual Data * openPGPEncryptedMessageDataWithEncryptedData(Data * encryptedData); + public: // subclass behavior MessageBuilder(MessageBuilder * other); virtual String * description(); virtual Object * copy(); + public: // private + virtual String * nextBoundary(); + virtual void resetBoundaries(); + private: String * mHTMLBody; String * mTextBody; @@ -58,7 +66,10 @@ namespace mailcore { Array * /* Attachment */ mRelatedAttachments; String * mBoundaryPrefix; void init(); - Data * dataAndFilterBcc(bool filterBcc); + Data * dataAndFilterBccAndForEncryption(bool filterBcc, bool forEncryption); + struct mailmime * mimeAndFilterBccAndForEncryption(bool filterBcc, bool forEncryption); + Array * mBoundaries; + unsigned int mCurrentBoundaryIndex; }; }; diff --git a/src/core/rfc822/MCMessageParser.cc b/src/core/rfc822/MCMessageParser.cc index d5bf84e7..21e2e985 100644 --- a/src/core/rfc822/MCMessageParser.cc +++ b/src/core/rfc822/MCMessageParser.cc @@ -143,14 +143,7 @@ String * MessageParser::plainTextBodyRendering(bool stripWhitespace) String * plainTextBodyString = html->flattenHTML(); if (stripWhitespace) { - plainTextBodyString->replaceOccurrencesOfString(MCSTR("\t"), MCSTR(" ")); - plainTextBodyString->replaceOccurrencesOfString(MCSTR("\n"), MCSTR(" ")); - plainTextBodyString->replaceOccurrencesOfString(MCSTR("\v"), MCSTR(" ")); - plainTextBodyString->replaceOccurrencesOfString(MCSTR("\f"), MCSTR(" ")); - plainTextBodyString->replaceOccurrencesOfString(MCSTR("\r"), MCSTR(" ")); - while (plainTextBodyString->replaceOccurrencesOfString(MCSTR(" "), MCSTR(" "))) { - // do nothing. - } + plainTextBodyString = plainTextBodyString->stripWhitespace(); } return plainTextBodyString; } diff --git a/src/core/smtp/MCSMTPSession.cc b/src/core/smtp/MCSMTPSession.cc index c6f28ff9..771b6302 100644 --- a/src/core/smtp/MCSMTPSession.cc +++ b/src/core/smtp/MCSMTPSession.cc @@ -323,7 +323,7 @@ void SMTPSession::connect(ErrorCode * pError) default: r = mailsmtp_socket_connect(mSmtp, MCUTF8(hostname()), port()); - if (r != MAILIMAP_NO_ERROR) { + if (r != MAILSMTP_NO_ERROR) { * pError = ErrorConnection; goto close; } diff --git a/src/objc/abstract/MCOAbstractPart.h b/src/objc/abstract/MCOAbstractPart.h index e30f09bf..30dd8f5f 100644 --- a/src/objc/abstract/MCOAbstractPart.h +++ b/src/objc/abstract/MCOAbstractPart.h @@ -82,6 +82,18 @@ typedef NS_ENUM(NSInteger, MCOPartType) { /** Returns a string representation of the data according to charset.*/ - (NSString *) decodedStringForData:(NSData *)data; +/** Adds a content type parameter.*/ +- (void) setContentTypeParameterValue:(NSString *)value forName:(NSString *)name; + +/** Remove a given content type parameter.*/ +- (void) removeContentTypeParameterForName:(NSString *)name; + +/** Returns the value of a given content type parameter.*/ +- (NSString *) contentTypeParameterValueForName:(NSString *)name; + +/** Returns an array with the names of all content type parameters.*/ +- (NSArray * /* NSString */) allContentTypeParametersNames; + @end #endif diff --git a/src/objc/abstract/MCOAbstractPart.mm b/src/objc/abstract/MCOAbstractPart.mm index d55422d5..8608ec61 100644 --- a/src/objc/abstract/MCOAbstractPart.mm +++ b/src/objc/abstract/MCOAbstractPart.mm @@ -87,4 +87,24 @@ MCO_OBJC_SYNTHESIZE_BOOL(setInlineAttachment, isInlineAttachment) { return [NSString mco_stringWithMCString:MCO_NATIVE_INSTANCE->decodedStringForData([data mco_mcData])]; } + +- (void) setContentTypeParameterValue:(NSString *)value forName:(NSString *)name +{ + MCO_NATIVE_INSTANCE->setContentTypeParameter(MCO_FROM_OBJC(mailcore::String, name), MCO_FROM_OBJC(mailcore::String, value)); +} + +- (NSString *) contentTypeParameterValueForName:(NSString *)name +{ + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->contentTypeParameterValueForName((MCO_FROM_OBJC(mailcore::String, name)))); +} +- (void) removeContentTypeParameterForName:(NSString *)name +{ + MCO_NATIVE_INSTANCE->removeContentTypeParameter(MCO_FROM_OBJC(mailcore::String, name)); +} + +- (NSArray * /* NSString */) allContentTypeParametersNames +{ + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->allContentTypeParametersNames()); +} + @end diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h index 32a1b1bb..2752c34b 100644 --- a/src/objc/abstract/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h @@ -180,8 +180,10 @@ typedef NS_ENUM(NSInteger, MCOIMAPSearchKind) { MCOIMAPSearchKindRecipient, /** Match subject.*/ MCOIMAPSearchKindSubject, - /** Match content of the message.*/ + /** Match content of the message, including the headers.*/ MCOIMAPSearchKindContent, + /** Match content of the message, excluding the headers.*/ + MCOIMAPSearchKindBody, /** Match uids */ MCOIMAPSearchKindUids, /** Match headers of the message.*/ @@ -400,6 +402,9 @@ typedef NS_ENUM(NSInteger, MCOErrorCode) { MCOErrorNoRecipient, /** IMAP: Error when a noop operation fails.*/ MCOErrorNoop, + /** IMAP: Error when the password has been entered but second factor + authentication is enabled: an application specific password is required. */ + MCOErrorGmailApplicationSpecificPasswordRequired, /** The count of all errors */ MCOErrorCodeCount, }; diff --git a/src/objc/imap/MCOIMAPFetchMessagesOperation.mm b/src/objc/imap/MCOIMAPFetchMessagesOperation.mm index bd86d99b..83012ca5 100644 --- a/src/objc/imap/MCOIMAPFetchMessagesOperation.mm +++ b/src/objc/imap/MCOIMAPFetchMessagesOperation.mm @@ -17,8 +17,11 @@ typedef void (^CompletionType)(NSError *error, NSArray * messages, MCOIndexSet * @implementation MCOIMAPFetchMessagesOperation { CompletionType _completionBlock; + MCOIMAPBaseOperationItemProgressBlock _progress; } +@synthesize progress = _progress; + #define nativeType mailcore::IMAPFetchMessagesOperation + (void) load diff --git a/src/objc/imap/MCOIMAPFolderInfo.h b/src/objc/imap/MCOIMAPFolderInfo.h index c15c5a37..53ad35b8 100644 --- a/src/objc/imap/MCOIMAPFolderInfo.h +++ b/src/objc/imap/MCOIMAPFolderInfo.h @@ -34,6 +34,9 @@ // first uid of the unseen messages. @property (nonatomic, assign) uint32_t firstUnseenUid; +/** An boolean indicates that this folder or IMAP server allows to add a new permanent flags */ +@property (nonatomic, assign) BOOL allowsNewPermanentFlags; + @end #endif diff --git a/src/objc/imap/MCOIMAPFolderInfo.m b/src/objc/imap/MCOIMAPFolderInfo.m index e39551a4..be1d2c3e 100644 --- a/src/objc/imap/MCOIMAPFolderInfo.m +++ b/src/objc/imap/MCOIMAPFolderInfo.m @@ -14,6 +14,7 @@ uint64_t _modSequenceValue; int _messageCount; uint32_t _firstUnseenUid; + BOOL _allowsNewPermanentFlags; } @synthesize uidNext = _uidNext; @@ -21,6 +22,7 @@ @synthesize modSequenceValue = _modSequenceValue; @synthesize messageCount = _messageCount; @synthesize firstUnseenUid = _firstUnseenUid; +@synthesize allowsNewPermanentFlags = _allowsNewPermanentFlags; + (MCOIMAPFolderInfo *) info { diff --git a/src/objc/imap/MCOIMAPFolderInfoOperation.mm b/src/objc/imap/MCOIMAPFolderInfoOperation.mm index 7ea8e887..f4d322af 100644 --- a/src/objc/imap/MCOIMAPFolderInfoOperation.mm +++ b/src/objc/imap/MCOIMAPFolderInfoOperation.mm @@ -65,6 +65,7 @@ typedef void (^CompletionType)(NSError *error, MCOIMAPFolderInfo *info); [info setModSequenceValue:MCO_NATIVE_INSTANCE->modSequenceValue()]; [info setMessageCount:MCO_NATIVE_INSTANCE->messageCount()]; [info setFirstUnseenUid:MCO_NATIVE_INSTANCE->firstUnseenUid()]; + [info setAllowsNewPermanentFlags:MCO_NATIVE_INSTANCE->allowsNewPermanentFlags()]; _completionBlock(nil, info); } diff --git a/src/objc/imap/MCOIMAPFolderStatus.h b/src/objc/imap/MCOIMAPFolderStatus.h index fedd31a3..bd1ddef3 100644 --- a/src/objc/imap/MCOIMAPFolderStatus.h +++ b/src/objc/imap/MCOIMAPFolderStatus.h @@ -32,7 +32,7 @@ @property (nonatomic, assign) uint32_t messageCount; /** Highest modification sequence value for this folder. See CONDSTORE RFC 4551. */ -@property (nonatomic, assign) uint64_t setHighestModSeqValue; +@property (nonatomic, assign) uint64_t highestModSeqValue; @end diff --git a/src/objc/imap/MCOIMAPMessage.h b/src/objc/imap/MCOIMAPMessage.h index 7ca40b9e..8e2e1c27 100644 --- a/src/objc/imap/MCOIMAPMessage.h +++ b/src/objc/imap/MCOIMAPMessage.h @@ -34,6 +34,10 @@ /** IMAP UID of the message. */ @property (nonatomic, assign) uint32_t uid; +/** IMAP sequence number of the message. + @warning *Important*: This property won't be serialized. */ +@property (nonatomic, assign) uint32_t sequenceNumber; + /* Size of the entire message */ @property (nonatomic, assign) uint32_t size; diff --git a/src/objc/imap/MCOIMAPMessage.mm b/src/objc/imap/MCOIMAPMessage.mm index f663d8bd..d7d499ef 100644 --- a/src/objc/imap/MCOIMAPMessage.mm +++ b/src/objc/imap/MCOIMAPMessage.mm @@ -42,6 +42,7 @@ MCO_SYNTHESIZE_NSCODING MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setUid, uid) +MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setSequenceNumber, sequenceNumber) MCO_OBJC_SYNTHESIZE_SCALAR(uint32_t, uint32_t, setSize, size) MCO_OBJC_SYNTHESIZE_SCALAR(MCOMessageFlag, mailcore::MessageFlag, setFlags, flags) MCO_OBJC_SYNTHESIZE_SCALAR(MCOMessageFlag, mailcore::MessageFlag, setOriginalFlags, originalFlags) diff --git a/src/objc/imap/MCOIMAPSearchExpression.h b/src/objc/imap/MCOIMAPSearchExpression.h index fbffb8f3..51688dc2 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.h +++ b/src/objc/imap/MCOIMAPSearchExpression.h @@ -82,7 +82,7 @@ + (MCOIMAPSearchExpression *) searchSubject:(NSString *)value; /** - Creates a search expression that matches the content of an email. + Creates a search expression that matches the content of an email, including the headers. Example: @@ -91,6 +91,15 @@ + (MCOIMAPSearchExpression *) searchContent:(NSString *)value; /** + Creates a search expression that matches the content of an email, excluding the headers. + + Example: + + MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchBody:@"building"] + */ ++ (MCOIMAPSearchExpression *) searchBody:(NSString *)value; + +/** Creates a search expression that matches the uids specified. Example: diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm index f395596c..57ae8455 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.mm +++ b/src/objc/imap/MCOIMAPSearchExpression.mm @@ -96,6 +96,11 @@ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchContent([value mco_mcString])); } ++ (MCOIMAPSearchExpression *) searchBody:(NSString *)value +{ + return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchBody([value mco_mcString])); +} + + (MCOIMAPSearchExpression *) searchUIDs:(MCOIndexSet *) uids { return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchUIDs(MCO_FROM_OBJC(mailcore::IndexSet, uids))); diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h index 7a35b7e3..a6034e9a 100755 --- a/src/objc/imap/MCOIMAPSession.h +++ b/src/objc/imap/MCOIMAPSession.h @@ -326,6 +326,25 @@ uids:(MCOIndexSet *)uids kind:(MCOIMAPStoreFlagsRequestKind)kind flags:(MCOMessageFlag)flags; + +/** + Returns an operation to change flags of messages, using IMAP sequence number. + + For example: Adds the seen flag to the message with the sequence number number 42. + + MCOIMAPOperation * op = [session storeFlagsOperationWithFolder:@"INBOX" + numbers:[MCOIndexSet indexSetWithIndex:42] + kind:MCOIMAPStoreFlagsRequestKindAdd + flags:MCOMessageFlagSeen]; + [op start:^(NSError * error) { + ... + }]; + */ +- (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder + numbers:(MCOIndexSet *)numbers + kind:(MCOIMAPStoreFlagsRequestKind)kind + flags:(MCOMessageFlag)flags; + /** Returns an operation to change flags and custom flags of messages. @@ -345,15 +364,55 @@ kind:(MCOIMAPStoreFlagsRequestKind)kind flags:(MCOMessageFlag)flags customFlags:(NSArray *)customFlags; + + +/** + Returns an operation to change flags and custom flags of messages, using IMAP sequence number. + + For example: Adds the seen flag and $CNS-Greeting-On flag to the message with the sequence number 42. + + MCOIMAPOperation * op = [session storeFlagsOperationWithFolder:@"INBOX" + numbers:[MCOIndexSet indexSetWithIndex:42] + kind:MCOIMAPStoreFlagsRequestKindAdd + flags:MCOMessageFlagSeen + customFlags:@["$CNS-Greeting-On"]]; + [op start:^(NSError * error) { + ... + }]; + */ +- (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder + numbers:(MCOIndexSet *)numbers + kind:(MCOIMAPStoreFlagsRequestKind)kind + flags:(MCOMessageFlag)flags + customFlags:(NSArray *)customFlags; + +/** + Returns an operation to change labels of messages. Intended for Gmail + + For example: Adds the label "Home" flag to the message with UID 42. + + MCOIMAPOperation * op = [session storeLabelsOperationWithFolder:@"INBOX" + numbers:[MCOIndexSet indexSetWithIndex:42] + kind:MCOIMAPStoreFlagsRequestKindAdd + labels:[NSArray arrayWithObject:@"Home"]]; + [op start:^(NSError * error) { + ... + }]; +*/ +- (MCOIMAPOperation *) storeLabelsOperationWithFolder:(NSString *)folder + numbers:(MCOIndexSet *)numbers + kind:(MCOIMAPStoreFlagsRequestKind)kind + labels:(NSArray *)labels; + /** Returns an operation to change labels of messages. Intended for Gmail For example: Adds the label "Home" flag to the message with UID 456. - MCOIMAPOperation * op = [session storeFlagsOperationWithFolder:@"INBOX" - uids:[MCOIndexSet indexSetWithIndex:456] - kind:MCOIMAPStoreFlagsRequestKindAdd - labels:[NSArray arrayWithObject:@"Home"]]; + MCOIMAPOperation * op = [session storeLabelsOperationWithFolder:@"INBOX" + uids:[MCOIndexSet indexSetWithIndex:456] + kind:MCOIMAPStoreFlagsRequestKindAdd + labels:[NSArray arrayWithObject:@"Home"]]; [op start:^(NSError * error) { ... }]; @@ -379,7 +438,23 @@ */ - (MCOIMAPFetchMessagesOperation *) fetchMessagesByUIDOperationWithFolder:(NSString *)folder requestKind:(MCOIMAPMessagesRequestKind)requestKind - uids:(MCOIndexSet *)uids; + uids:(MCOIndexSet *)uids DEPRECATED_ATTRIBUTE; + +/** + Returns an operation to fetch messages by UID. + + MCOIMAPFetchMessagesOperation * op = [session fetchMessagesOperationWithFolder:@"INBOX" + requestKind:MCOIMAPMessagesRequestKindHeaders | MCOIMAPMessagesRequestKindStructure + uids:MCORangeMake(1, UINT64_MAX)]; + [op start:^(NSError * error, NSArray * messages, MCOIndexSet * vanishedMessages) { + for(MCOIMAPMessage * msg in messages) { + NSLog(@"%lu: %@", [msg uid], [msg header]); + } + }]; +*/ +- (MCOIMAPFetchMessagesOperation *) fetchMessagesOperationWithFolder:(NSString *)folder + requestKind:(MCOIMAPMessagesRequestKind)requestKind + uids:(MCOIndexSet *)uids; /** Returns an operation to fetch messages by (sequence) number. @@ -425,7 +500,27 @@ vanishedMessages will be set only for servers that support QRESYNC. See [RFC5162 - (MCOIMAPFetchMessagesOperation *) syncMessagesByUIDWithFolder:(NSString *)folder requestKind:(MCOIMAPMessagesRequestKind)requestKind uids:(MCOIndexSet *)uids - modSeq:(uint64_t)modSeq; + modSeq:(uint64_t)modSeq DEPRECATED_ATTRIBUTE; + +/** + Returns an operation to sync the last changes related to the given message list given a modSeq. + + MCOIMAPFetchMessagesOperation * op = [session syncMessagesWithFolder:@"INBOX" + requestKind:MCOIMAPMessagesRequestKindUID + uids:MCORangeMake(1, UINT64_MAX) + modSeq:lastModSeq]; + [op start:^(NSError * error, NSArray * messages, MCOIndexSet * vanishedMessages) { + NSLog(@"added or modified messages: %@", messages); + NSLog(@"deleted messages: %@", vanishedMessages); + }]; + +@warn *Important*: This is only for servers that support Conditional Store. See [RFC4551](http://tools.ietf.org/html/rfc4551) +vanishedMessages will be set only for servers that support QRESYNC. See [RFC5162](http://tools.ietf.org/html/rfc5162) +*/ +- (MCOIMAPFetchMessagesOperation *) syncMessagesWithFolder:(NSString *)folder + requestKind:(MCOIMAPMessagesRequestKind)requestKind + uids:(MCOIndexSet *)uids + modSeq:(uint64_t)modSeq; /** Returns an operation to fetch the content of a message. @@ -439,7 +534,7 @@ vanishedMessages will be set only for servers that support QRESYNC. See [RFC5162 */ - (MCOIMAPFetchContentOperation *) fetchMessageByUIDOperationWithFolder:(NSString *)folder uid:(uint32_t)uid - urgent:(BOOL)urgent; + urgent:(BOOL)urgent DEPRECATED_ATTRIBUTE; /** Returns an operation to fetch the content of a message. @@ -451,7 +546,59 @@ vanishedMessages will be set only for servers that support QRESYNC. See [RFC5162 }]; */ - (MCOIMAPFetchContentOperation *) fetchMessageByUIDOperationWithFolder:(NSString *)folder - uid:(uint32_t)uid; + uid:(uint32_t)uid DEPRECATED_ATTRIBUTE; + +/** + Returns an operation to fetch the content of a message. + @param urgent is set to YES, an additional connection to the same folder might be opened to fetch the content. + + MCOIMAPFetchContentOperation * op = [session fetchMessageOperationWithFolder:@"INBOX" uid:456 urgent:NO]; + [op start:^(NSError * error, NSData * messageData) { + MCOMessageParser * parser = [MCOMessageParser messageParserWithData:messageData] + ... + }]; + */ +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid + urgent:(BOOL)urgent; + +/** + Returns an operation to fetch the content of a message. + + MCOIMAPFetchContentOperation * op = [session fetchMessageOperationWithFolder:@"INBOX" uid:456]; + [op start:^(NSError * error, NSData * messageData) { + MCOMessageParser * parser = [MCOMessageParser messageParserWithData:messageData] + ... + }]; + */ +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid; + +/** + Returns an operation to fetch the content of a message, using IMAP sequence number. + @param urgent is set to YES, an additional connection to the same folder might be opened to fetch the content. + + MCOIMAPFetchContentOperation * op = [session fetchMessageOperationWithFolder:@"INBOX" number:42 urgent:NO]; + [op start:^(NSError * error, NSData * messageData) { + MCOMessageParser * parser = [MCOMessageParser messageParserWithData:messageData] + ... + }]; +*/ +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + number:(uint32_t)number + urgent:(BOOL)urgent; + +/** + Returns an operation to fetch the content of a message, using IMAP sequence number. + + MCOIMAPFetchContentOperation * op = [session fetchMessageOperationWithFolder:@"INBOX" number:42]; + [op start:^(NSError * error, NSData * messageData) { + MCOMessageParser * parser = [MCOMessageParser messageParserWithData:messageData] + ... + }]; +*/ +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + number:(uint32_t)number; /** @name Fetching Attachment Operations */ @@ -472,7 +619,7 @@ vanishedMessages will be set only for servers that support QRESYNC. See [RFC5162 uid:(uint32_t)uid partID:(NSString *)partID encoding:(MCOEncoding)encoding - urgent:(BOOL)urgent; + urgent:(BOOL)urgent DEPRECATED_ATTRIBUTE; /** Returns an operation to fetch an attachment. @@ -500,7 +647,101 @@ vanishedMessages will be set only for servers that support QRESYNC. See [RFC5162 - (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder uid:(uint32_t)uid partID:(NSString *)partID - encoding:(MCOEncoding)encoding; + encoding:(MCOEncoding)encoding DEPRECATED_ATTRIBUTE; + +/** + Returns an operation to fetch an attachment. + @param urgent is set to YES, an additional connection to the same folder might be opened to fetch the content. + + MCOIMAPFetchContentOperation * op = [session fetchMessageAttachmentOperationWithFolder:@"INBOX" + uid:456 + partID:@"1.2" + encoding:MCOEncodingBase64 + urgent:YES]; + [op start:^(NSError * error, NSData * partData) { + ... + }]; +*/ +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid + partID:(NSString *)partID + encoding:(MCOEncoding)encoding + urgent:(BOOL)urgent; + +/** + Returns an operation to fetch an attachment. + + Example 1: + + MCOIMAPFetchContentOperation * op = [session fetchMessageAttachmentOperationWithFolder:@"INBOX" + uid:456 + partID:@"1.2" + encoding:MCOEncodingBase64]; + [op start:^(NSError * error, NSData * partData) { + ... + }]; + + Example 2: + + MCOIMAPFetchContentOperation * op = [session fetchMessageAttachmentOperationWithFolder:@"INBOX" + uid:[message uid] + partID:[part partID] + encoding:[part encoding]]; + [op start:^(NSError * error, NSData * partData) { + ... + }]; +*/ +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid + partID:(NSString *)partID + encoding:(MCOEncoding)encoding; + +/** + Returns an operation to fetch an attachment. + @param urgent is set to YES, an additional connection to the same folder might be opened to fetch the content. + + MCOIMAPFetchContentOperation * op = [session fetchMessageAttachmentOperationWithFolder:@"INBOX" + uid:456 + partID:@"1.2" + encoding:MCOEncodingBase64 + urgent:YES]; + [op start:^(NSError * error, NSData * partData) { + ... + }]; +*/ +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + number:(uint32_t)number + partID:(NSString *)partID + encoding:(MCOEncoding)encoding + urgent:(BOOL)urgent; + +/** + Returns an operation to fetch an attachment. + + Example 1: + + MCOIMAPFetchContentOperation * op = [session fetchMessageAttachmentOperationWithFolder:@"INBOX" + number:42 + partID:@"1.2" + encoding:MCOEncodingBase64]; + [op start:^(NSError * error, NSData * partData) { + ... + }]; + + Example 2: + + MCOIMAPFetchContentOperation * op = [session fetchMessageAttachmentOperationWithFolder:@"INBOX" + number:[message sequenceNumber] + partID:[part partID] + encoding:[part encoding]]; + [op start:^(NSError * error, NSData * partData) { + ... + }]; +*/ +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + number:(uint32_t)number + partID:(NSString *)partID + encoding:(MCOEncoding)encoding; /** @name General IMAP Actions */ @@ -539,7 +780,7 @@ vanishedMessages will be set only for servers that support QRESYNC. See [RFC5162 MCOIMAPIdentity * identity = [MCOIMAPIdentity identityWithVendor:@"Mozilla" name:@"Thunderbird" version:@"17.0.5"]; MCOIMAPIdentityOperation * op = [session identityOperationWithClientIdentity:identity]; - [op start:^(NSError * error, MCOIMAPIdentity * serverIdentity) { + [op start:^(NSError * error, NSDictionary * serverIdentity) { ... }]; */ diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm index dddb27fa..c7c389a4 100755 --- a/src/objc/imap/MCOIMAPSession.mm +++ b/src/objc/imap/MCOIMAPSession.mm @@ -285,6 +285,13 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, requestKind:(MCOIMAPMessagesRequestKind)requestKind uids:(MCOIndexSet *)uids { + return [self fetchMessagesOperationWithFolder:folder requestKind:requestKind uids:uids]; +} + +- (MCOIMAPFetchMessagesOperation *) fetchMessagesOperationWithFolder:(NSString *)folder + requestKind:(MCOIMAPMessagesRequestKind)requestKind + uids:(MCOIndexSet *)uids +{ IMAPFetchMessagesOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessagesByUIDOperation([folder mco_mcString], (IMAPMessagesRequestKind) requestKind, MCO_FROM_OBJC(IndexSet, uids)); @@ -306,6 +313,14 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, uids:(MCOIndexSet *)uids modSeq:(uint64_t)modSeq { + return [self syncMessagesWithFolder:folder requestKind:requestKind uids:uids modSeq:modSeq]; +} + +- (MCOIMAPFetchMessagesOperation *) syncMessagesWithFolder:(NSString *)folder + requestKind:(MCOIMAPMessagesRequestKind)requestKind + uids:(MCOIndexSet *)uids + modSeq:(uint64_t)modSeq +{ IMAPFetchMessagesOperation * coreOp = MCO_NATIVE_INSTANCE->syncMessagesByUID([folder mco_mcString], (IMAPMessagesRequestKind) requestKind, MCO_FROM_OBJC(IndexSet, uids), @@ -317,14 +332,41 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, uid:(uint32_t)uid urgent:(BOOL)urgent { - IMAPFetchContentOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessageByUIDOperation([folder mco_mcString], uid, urgent); - return MCO_TO_OBJC_OP(coreOp); + return [self fetchMessageOperationWithFolder:folder uid:uid urgent:urgent]; } - (MCOIMAPFetchContentOperation *) fetchMessageByUIDOperationWithFolder:(NSString *)folder uid:(uint32_t)uid { - return [self fetchMessageByUIDOperationWithFolder:folder uid:uid urgent:NO]; + return [self fetchMessageOperationWithFolder:folder uid:uid]; +} + +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid + urgent:(BOOL)urgent +{ + IMAPFetchContentOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessageByUIDOperation([folder mco_mcString], uid, urgent); + return MCO_TO_OBJC_OP(coreOp); +} + +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid +{ + return [self fetchMessageOperationWithFolder:folder uid:uid urgent:NO]; +} + +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + number:(uint32_t)number + urgent:(BOOL)urgent +{ + IMAPFetchContentOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessageByNumberOperation([folder mco_mcString], number, urgent); + return MCO_TO_OBJC_OP(coreOp); +} + +- (MCOIMAPFetchContentOperation *) fetchMessageOperationWithFolder:(NSString *)folder + number:(uint32_t)number +{ + return [self fetchMessageOperationWithFolder:folder number:number urgent:NO]; } - (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder @@ -333,6 +375,30 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, encoding:(MCOEncoding)encoding urgent:(BOOL)urgent { + return [self fetchMessageAttachmentOperationWithFolder:folder + uid:uid + partID:partID + encoding:encoding + urgent:urgent]; +} + +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid + partID:(NSString *)partID + encoding:(MCOEncoding)encoding +{ + return [self fetchMessageAttachmentOperationWithFolder:folder + uid:uid + partID:partID + encoding:encoding]; +} + +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid + partID:(NSString *)partID + encoding:(MCOEncoding)encoding + urgent:(BOOL)urgent +{ IMAPFetchContentOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessageAttachmentByUIDOperation([folder mco_mcString], uid, [partID mco_mcString], @@ -341,12 +407,34 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, return MCO_TO_OBJC_OP(coreOp); } -- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentByUIDOperationWithFolder:(NSString *)folder - uid:(uint32_t)uid - partID:(NSString *)partID - encoding:(MCOEncoding)encoding +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + uid:(uint32_t)uid + partID:(NSString *)partID + encoding:(MCOEncoding)encoding +{ + return [self fetchMessageAttachmentOperationWithFolder:folder uid:uid partID:partID encoding:encoding urgent:NO]; +} + +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + number:(uint32_t)number + partID:(NSString *)partID + encoding:(MCOEncoding)encoding + urgent:(BOOL)urgent +{ + IMAPFetchContentOperation * coreOp = MCO_NATIVE_INSTANCE->fetchMessageAttachmentByNumberOperation([folder mco_mcString], + number, + [partID mco_mcString], + (Encoding) encoding, + urgent); + return MCO_TO_OBJC_OP(coreOp); +} + +- (MCOIMAPFetchContentOperation *) fetchMessageAttachmentOperationWithFolder:(NSString *)folder + number:(uint32_t)number + partID:(NSString *)partID + encoding:(MCOEncoding)encoding { - return [self fetchMessageAttachmentByUIDOperationWithFolder:folder uid:uid partID:partID encoding:encoding urgent:NO]; + return [self fetchMessageAttachmentOperationWithFolder:folder number:number partID:partID encoding:encoding urgent:NO]; } - (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder @@ -363,11 +451,33 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, flags:(MCOMessageFlag)flags customFlags:(NSArray *)customFlags { - IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeFlagsOperation([folder mco_mcString], - MCO_FROM_OBJC(IndexSet, uids), - (IMAPStoreFlagsRequestKind) kind, - (MessageFlag) flags, - MCO_FROM_OBJC(Array, customFlags)); + IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeFlagsByUIDOperation([folder mco_mcString], + MCO_FROM_OBJC(IndexSet, uids), + (IMAPStoreFlagsRequestKind) kind, + (MessageFlag) flags, + MCO_FROM_OBJC(Array, customFlags)); + return OPAQUE_OPERATION(coreOp); +} + +- (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder + numbers:(MCOIndexSet *)numbers + kind:(MCOIMAPStoreFlagsRequestKind)kind + flags:(MCOMessageFlag)flags +{ + return [self storeFlagsOperationWithFolder:folder numbers:numbers kind:kind flags:flags customFlags:NULL]; +} + +- (MCOIMAPOperation *) storeFlagsOperationWithFolder:(NSString *)folder + numbers:(MCOIndexSet *)numbers + kind:(MCOIMAPStoreFlagsRequestKind)kind + flags:(MCOMessageFlag)flags + customFlags:(NSArray *)customFlags +{ + IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeFlagsByNumberOperation([folder mco_mcString], + MCO_FROM_OBJC(IndexSet, numbers), + (IMAPStoreFlagsRequestKind) kind, + (MessageFlag) flags, + MCO_FROM_OBJC(Array, customFlags)); return OPAQUE_OPERATION(coreOp); } @@ -376,10 +486,22 @@ MCO_OBJC_SYNTHESIZE_SCALAR(dispatch_queue_t, dispatch_queue_t, setDispatchQueue, kind:(MCOIMAPStoreFlagsRequestKind)kind labels:(NSArray *)labels { - IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeLabelsOperation([folder mco_mcString], - MCO_FROM_OBJC(IndexSet, uids), - (IMAPStoreFlagsRequestKind) kind, - MCO_FROM_OBJC(Array, labels)); + IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeLabelsByUIDOperation([folder mco_mcString], + MCO_FROM_OBJC(IndexSet, uids), + (IMAPStoreFlagsRequestKind) kind, + MCO_FROM_OBJC(Array, labels)); + return OPAQUE_OPERATION(coreOp); +} + +- (MCOIMAPOperation *) storeLabelsOperationWithFolder:(NSString *)folder + numbers:(MCOIndexSet *)numbers + kind:(MCOIMAPStoreFlagsRequestKind)kind + labels:(NSArray *)labels +{ + IMAPOperation * coreOp = MCO_NATIVE_INSTANCE->storeLabelsByNumberOperation([folder mco_mcString], + MCO_FROM_OBJC(IndexSet, numbers), + (IMAPStoreFlagsRequestKind) kind, + MCO_FROM_OBJC(Array, labels)); return OPAQUE_OPERATION(coreOp); } diff --git a/src/objc/nntp/MCONNTPSession.mm b/src/objc/nntp/MCONNTPSession.mm index d7db82b2..23e2e786 100644 --- a/src/objc/nntp/MCONNTPSession.mm +++ b/src/objc/nntp/MCONNTPSession.mm @@ -70,6 +70,7 @@ private: - (void)dealloc { MC_SAFE_RELEASE(_loggerBridge); [_connectionLogger release]; + _session->setConnectionLogger(NULL); _session->release(); [super dealloc]; } diff --git a/src/objc/pop/MCOPOPSession.mm b/src/objc/pop/MCOPOPSession.mm index 893995a5..61d9320b 100644 --- a/src/objc/pop/MCOPOPSession.mm +++ b/src/objc/pop/MCOPOPSession.mm @@ -70,6 +70,7 @@ private: - (void)dealloc { MC_SAFE_RELEASE(_loggerBridge); [_connectionLogger release]; + _session->setConnectionLogger(NULL); _session->release(); [super dealloc]; } diff --git a/src/objc/rfc822/MCOAttachment.h b/src/objc/rfc822/MCOAttachment.h index 954a825c..eec1bd19 100644 --- a/src/objc/rfc822/MCOAttachment.h +++ b/src/objc/rfc822/MCOAttachment.h @@ -42,18 +42,6 @@ /** Returns string representation according to charset*/ - (NSString *) decodedString; -/** Adds a content type parameter.*/ -- (void) setContentTypeParameterValue:(NSString *)value forName:(NSString *)name; - -/** Remove a given content type parameter.*/ -- (void) removeContentTypeParameterForName:(NSString *)name; - -/** Returns the value of a given content type parameter.*/ -- (NSString *) contentTypeParameterValueForName:(NSString *)name; - -/** Returns an array with the names of all content type parameters.*/ -- (NSArray * /* NSString */) allContentTypeParametersNames; - @end #endif diff --git a/src/objc/rfc822/MCOAttachment.mm b/src/objc/rfc822/MCOAttachment.mm index 18c13693..afaf96af 100644 --- a/src/objc/rfc822/MCOAttachment.mm +++ b/src/objc/rfc822/MCOAttachment.mm @@ -90,23 +90,4 @@ MCO_OBJC_SYNTHESIZE_DATA(setData, data) return [NSString mco_stringWithMCString:result]; } -- (void) setContentTypeParameterValue:(NSString *)value forName:(NSString *)name -{ - MCO_NATIVE_INSTANCE->setContentTypeParameter(MCO_FROM_OBJC(mailcore::String, name), MCO_FROM_OBJC(mailcore::String, value)); -} - -- (NSString *) contentTypeParameterValueForName:(NSString *)name -{ - return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->contentTypeParameterValueForName((MCO_FROM_OBJC(mailcore::String, name)))); -} -- (void) removeContentTypeParameterForName:(NSString *)name -{ - MCO_NATIVE_INSTANCE->removeContentTypeParameter(MCO_FROM_OBJC(mailcore::String, name)); -} - -- (NSArray * /* NSString */) allContentTypeParametersNames -{ - return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->allContentTypeParametersNames()); -} - @end diff --git a/src/objc/rfc822/MCOMessageBuilder.h b/src/objc/rfc822/MCOMessageBuilder.h index a52afc0f..1663d6f7 100644 --- a/src/objc/rfc822/MCOMessageBuilder.h +++ b/src/objc/rfc822/MCOMessageBuilder.h @@ -58,6 +58,24 @@ /** RFC 822 formatted message.*/ - (NSData *) data; +/** RFC 822 formatted message for encryption.*/ +- (NSData *) dataForEncryption; + +/** + Returns an OpenPGP signed message with a given signature. + The signature needs to be computed on the data returned by -dataForEncryption + before calling this method. + You could use http://www.netpgp.com to generate it. + */ +- (NSData *) openPGPSignedMessageDataWithSignatureData:(NSData *)signature; + +/** + Returns an OpenPGP encrypted message with a given encrypted data. + The encrypted data needs to be computed before calling this method. + You could use http://www.netpgp.com to generate it. + */ +- (NSData *) openPGPEncryptedMessageDataWithEncryptedData:(NSData *)encryptedData; + /** HTML rendering of the message to be displayed in a web view. The delegate can be nil.*/ - (NSString *) htmlRenderingWithDelegate:(id <MCOHTMLRendererDelegate>)delegate; diff --git a/src/objc/rfc822/MCOMessageBuilder.mm b/src/objc/rfc822/MCOMessageBuilder.mm index c884386f..c122ab14 100644 --- a/src/objc/rfc822/MCOMessageBuilder.mm +++ b/src/objc/rfc822/MCOMessageBuilder.mm @@ -66,6 +66,11 @@ MCO_OBJC_SYNTHESIZE_STRING(setBoundaryPrefix, boundaryPrefix) return MCO_OBJC_BRIDGE_GET(data); } +- (NSData *) dataForEncryption +{ + return MCO_OBJC_BRIDGE_GET(dataForEncryption); +} + - (NSString *) htmlRenderingWithDelegate:(id <MCOHTMLRendererDelegate>)delegate { MCOAbstractMessageRendererCallback * htmlRenderCallback = new MCOAbstractMessageRendererCallback(self, delegate, NULL); @@ -95,4 +100,14 @@ MCO_OBJC_SYNTHESIZE_STRING(setBoundaryPrefix, boundaryPrefix) return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->plainTextBodyRendering(stripWhitespace)); } +- (NSData *) openPGPSignedMessageDataWithSignatureData:(NSData *)signature +{ + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->openPGPSignedMessageDataWithSignatureData(MCO_FROM_OBJC(mailcore::Data, signature))); +} + +- (NSData *) openPGPEncryptedMessageDataWithEncryptedData:(NSData *)encryptedData +{ + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->openPGPEncryptedMessageDataWithEncryptedData(MCO_FROM_OBJC(mailcore::Data, encryptedData))); +} + @end diff --git a/src/objc/smtp/MCOSMTPSession.h b/src/objc/smtp/MCOSMTPSession.h index 5c616244..286cd7c3 100644 --- a/src/objc/smtp/MCOSMTPSession.h +++ b/src/objc/smtp/MCOSMTPSession.h @@ -30,7 +30,7 @@ /** This is the hostname of the SMTP server to connect to. */ @property (nonatomic, copy) NSString * hostname; -/** This is the port of the POP3 server to connect to. */ +/** This is the port of the SMTP server to connect to. */ @property (nonatomic, assign) unsigned int port; /** This is the username of the account. */ @@ -95,7 +95,7 @@ Generate RFC 822 data using MCOMessageBuilder - MCOPOPOperation * op = [session sendOperationWithData:rfc822Data]; + MCOSMTPOperation * op = [session sendOperationWithData:rfc822Data]; [op start:^(NSError * error) { ... }]; @@ -109,7 +109,7 @@ Generate RFC 822 data using MCOMessageBuilder - MCOPOPOperation * op = [session sendOperationWithData:rfc822Data + MCOSMTPOperation * op = [session sendOperationWithData:rfc822Data from:[MCOAddress addressWithMailbox:@"hoa@etpan.org"] recipients:[NSArray arrayWithObject:[MCOAddress addressWithMailbox:@"laura@etpan.org"]]]; [op start:^(NSError * error) { @@ -123,7 +123,7 @@ /** Returns an operation that will check whether the SMTP account is valid. - MCOPOPOperation * op = [session checkAccountOperationWithFrom:[MCOAddress addressWithMailbox:@"hoa@etpan.org"]]; + MCOSMTPOperation * op = [session checkAccountOperationWithFrom:[MCOAddress addressWithMailbox:@"hoa@etpan.org"]]; [op start:^(NSError * error) { ... }]; @@ -133,7 +133,7 @@ /** Returns an operation that will perform a No-Op. - MCOPOPOperation * op = [session noopOperation]; + MCOSMTPOperation * op = [session noopOperation]; [op start:^(NSError * error) { ... }]; diff --git a/src/objc/smtp/MCOSMTPSession.mm b/src/objc/smtp/MCOSMTPSession.mm index 17dc5057..e0eb2a7d 100644 --- a/src/objc/smtp/MCOSMTPSession.mm +++ b/src/objc/smtp/MCOSMTPSession.mm @@ -67,6 +67,7 @@ private: - (void)dealloc { MC_SAFE_RELEASE(_loggerBridge); [_connectionLogger release]; + _session->setConnectionLogger(NULL); _session->release(); [super dealloc]; } diff --git a/src/objc/utils/NSError+MCO.mm b/src/objc/utils/NSError+MCO.mm index 6d49e4bb..b6b73f6d 100644 --- a/src/objc/utils/NSError+MCO.mm +++ b/src/objc/utils/NSError+MCO.mm @@ -48,6 +48,7 @@ static NSString * MCOLocalizedDescriptionTable[] = { @"A sender is required to send message", /** MCOErrorNoSender */ @"A recipient is required to send message", /** MCOErrorNoRecipient */ @"An error occured while performing a No-Op operation.", /** MCOErrorNoop */ + @"An application specific password is required", /** MCOErrorGmailApplicationSpecificPasswordRequired */ }; @implementation NSError (MCO) @@ -57,7 +58,7 @@ static NSString * MCOLocalizedDescriptionTable[] = { } NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] init]; - if (code < MCOErrorCodeCount) { + if ((NSInteger) code < MCOErrorCodeCount) { NSString * localizedString = NSLocalizedStringFromTable(MCOLocalizedDescriptionTable[code], @"description of errors of mailcore", @"MailCore"); [userInfo setObject:localizedString forKey:NSLocalizedDescriptionKey]; } diff --git a/tests/test-all.mm b/tests/test-all.mm index 0f93b779..af66c6b0 100644 --- a/tests/test-all.mm +++ b/tests/test-all.mm @@ -223,6 +223,7 @@ class TestIMAPCallback : public mailcore::Object, public mailcore::OperationCall virtual void operationFinished(mailcore::Operation * op) { mailcore::IMAPFetchMessagesOperation * fetchOp = (mailcore::IMAPFetchMessagesOperation *) op; + (void) (fetchOp); //MCLog("callback %s %s %s", MCUTF8DESC(op), MCUTF8DESC(fetchOp->messages()), MCUTF8DESC(this)); } |