diff --git a/ChangeLog b/ChangeLog index d72fb98f7..4a98d438f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ Made module able to handle SOGoMailObject as well, since we can possibly have such objects as value for sogoObject. (-getPrImportance:inMemCtx:): overriden method. + (-getPrReceivedByEmailAddress:inMemCtx:): overriden method. * OpenChange/MAPIApplication.m (+isCachingEnabled): new overriden method that returns "NO" in order to avoid leaking dictionaries diff --git a/OpenChange/MAPIStoreDraftsMessage.m b/OpenChange/MAPIStoreDraftsMessage.m index 533d3a433..127888126 100644 --- a/OpenChange/MAPIStoreDraftsMessage.m +++ b/OpenChange/MAPIStoreDraftsMessage.m @@ -309,6 +309,44 @@ e) [self _saveAttachment: [attachmentKeys objectAtIndex: count]]; } +- (int) getPrReceivedByEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + NSString *stringValue; + NGMailAddress *currentAddress; + NGMailAddressParser *parser; + NSArray *to; + + if ([sogoObject isKindOfClass: SOGoDraftObjectK]) + { + stringValue = @""; + + if (!headerSetup) + { + [sogoObject fetchInfo]; + headerSetup = YES; + } + + to = [[sogoObject headers] objectForKey: @"to"]; + if ([to count] > 0) + { + parser = [NGMailAddressParser + mailAddressParserWithString: [to objectAtIndex: 0]]; + currentAddress = [parser parse]; + if ([currentAddress isKindOfClass: NGMailAddressK]) + { + stringValue = [currentAddress address]; + if (!stringValue) + stringValue = @""; + } + } + *data = [stringValue asUnicodeInMemCtx: memCtx]; + } + else + [super getPrReceivedByEmailAddress: data inMemCtx: memCtx]; + + return MAPISTORE_SUCCESS; +} - (NSArray *) attachmentKeysMatchingQualifier: (EOQualifier *) qualifier andSortOrderings: (NSArray *) sortOrderings diff --git a/OpenChange/MAPIStoreMailMessage.h b/OpenChange/MAPIStoreMailMessage.h index db5d58966..98866a2d3 100644 --- a/OpenChange/MAPIStoreMailMessage.h +++ b/OpenChange/MAPIStoreMailMessage.h @@ -52,6 +52,8 @@ inMemCtx: (TALLOC_CTX *) memCtx; - (int) getPrImportance: (void **) data inMemCtx: (TALLOC_CTX *) memCtx; +- (int) getPrReceivedByEmailAddress: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx; @end