From 38b53c06dd2f3aabbfde43c61557fb25ff40e0c7 Mon Sep 17 00:00:00 2001 From: Hivert Quentin Date: Mon, 9 Nov 2026 11:00:13 +0100 Subject: [PATCH] fix(sieve): add create option if available for fileinto --- SoObjects/SOGo/SOGoSieveManager.h | 1 + SoObjects/SOGo/SOGoSieveManager.m | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/SoObjects/SOGo/SOGoSieveManager.h b/SoObjects/SOGo/SOGoSieveManager.h index add00f801..5ee4ed28c 100644 --- a/SoObjects/SOGo/SOGoSieveManager.h +++ b/SoObjects/SOGo/SOGoSieveManager.h @@ -37,6 +37,7 @@ SOGoUser *user; NSMutableArray *requirements; NSString *scriptError; + BOOL hasMailboxExt; } + (id) sieveManagerForUser: (SOGoUser *) user; diff --git a/SoObjects/SOGo/SOGoSieveManager.m b/SoObjects/SOGo/SOGoSieveManager.m index 2df9c9609..a92db13a4 100644 --- a/SoObjects/SOGo/SOGoSieveManager.m +++ b/SoObjects/SOGo/SOGoSieveManager.m @@ -233,6 +233,7 @@ static NSString *sieveScriptName = @"sogo"; user = nil; requirements = nil; scriptError = nil; + hasMailboxExt = NO; } return self; @@ -536,11 +537,14 @@ static NSString *sieveScriptName = @"sogo"; } else if ([method isEqualToString: @"fileinto"]) { - mailbox - = [[argument componentsSeparatedByString: @"/"] - componentsJoinedByString: delimiter]; - sieveAction = [NSString stringWithFormat: @"%@ %@", - method, [mailbox asSieveQuotedString]]; + mailbox = [[argument componentsSeparatedByString: @"/"] componentsJoinedByString: delimiter]; + if(hasMailboxExt) + { + [req addObjectUniquely: @"mailbox"]; + sieveAction = [NSString stringWithFormat: @"%@ :create %@", method, [mailbox asSieveQuotedString]]; + } + else + sieveAction = [NSString stringWithFormat: @"%@ %@", method, [mailbox asSieveQuotedString]]; } else if ([method isEqualToString: @"redirect"]) sieveAction = [NSString stringWithFormat: @"%@ %@", @@ -752,7 +756,6 @@ static NSString *sieveScriptName = @"sogo"; url = [NSURL URLWithString: [dd sieveServer]]; else url = [NSURL URLWithString: @"localhost"]; - if ([cUrl host]) sieveServer = [cUrl host]; if (!sieveServer && [url host]) @@ -924,6 +927,8 @@ static NSString *sieveScriptName = @"sogo"; dateCapability = [client hasCapability: @"date"] && [client hasCapability: @"relational"]; + if([client hasCapability: @"mailbox"]) + hasMailboxExt = YES; // // Now let's generate the script //