diff --git a/SoObjects/Mailer/SOGoDraftObject.h b/SoObjects/Mailer/SOGoDraftObject.h index 3a58727cc1..031d75eaa8 100644 --- a/SoObjects/Mailer/SOGoDraftObject.h +++ b/SoObjects/Mailer/SOGoDraftObject.h @@ -56,6 +56,7 @@ int sourceIMAP4ID; NSMutableDictionary *headers; NSString *inReplyTo; + NSString *references; NSString *text; NSString *sourceURL; NSString *sourceFlag; @@ -95,6 +96,9 @@ - (NSString *) inReplyTo; - (void) setInReplyTo: (NSString *) newInReplyTo; +- (NSString *) references; +- (void) setReferences: (NSString *) newReferences; + - (void) setSourceURL: (NSString *) newSurceURL; - (void) setSourceFlag: (NSString *) newSourceFlag; - (void) setSourceFolder: (NSString *) newSourceFolder; diff --git a/SoObjects/Mailer/SOGoDraftObject.m b/SoObjects/Mailer/SOGoDraftObject.m index e1394e2313..79ad482a38 100644 --- a/SoObjects/Mailer/SOGoDraftObject.m +++ b/SoObjects/Mailer/SOGoDraftObject.m @@ -138,6 +138,7 @@ - (id) init sourceURL = nil; sourceFlag = nil; inReplyTo = nil; + references = nil; isHTML = NO; sign = NO; encrypt = NO; @@ -155,6 +156,7 @@ - (void) dealloc [sourceURL release]; [sourceFlag release]; [inReplyTo release]; + [references release]; [super dealloc]; } @@ -361,6 +363,16 @@ - (void) setInReplyTo: (NSString *) newInReplyTo ASSIGN (inReplyTo, newInReplyTo); } +- (NSString *) references +{ + return references; +} + +- (void) setReferences: (NSString *) newReferences +{ + ASSIGN (references, newReferences); +} + - (void) setSourceURL: (NSString *) newSourceURL { ASSIGN (sourceURL, newSourceURL); @@ -421,6 +433,8 @@ - (NSException *) storeInfo forKey: @"isHTML"]; if (inReplyTo) [infos setObject: inReplyTo forKey: @"inReplyTo"]; + if (references) + [infos setObject: references forKey: @"references"]; if (sourceIMAP4ID > -1) [infos setObject: [NSString stringWithFormat: @"%i", sourceIMAP4ID] forKey: @"sourceIMAP4ID"]; @@ -492,6 +506,10 @@ - (void) _loadInfosFromDictionary: (NSDictionary *) infoDict value = [infoDict objectForKey: @"inReplyTo"]; if (value) [self setInReplyTo: value]; + + value = [infoDict objectForKey: @"references"]; + if (value) + [self setReferences: value]; } // @@ -1041,6 +1059,7 @@ - (void) fetchMailForReplying: (SOGoMailObject *) sourceMail { BOOL fromSentMailbox; NSString *msgID; + NSString *oldReferences; NSMutableDictionary *info; NGImap4Envelope *sourceEnvelope; SOGoUserDefaults *ud; @@ -1059,6 +1078,13 @@ - (void) fetchMailForReplying: (SOGoMailObject *) sourceMail msgID = [sourceEnvelope messageID]; if ([msgID length] > 0) [self setInReplyTo: msgID]; + oldReferences = [sourceMail references]; + if ([oldReferences length] > 0) + [self setReferences: [oldReferences stringByAppendingFormat: @" %@", msgID]]; + else + [self setReferences: msgID]; + + ud = [[context activeUser] userDefaults]; @@ -1832,6 +1858,9 @@ - (NGMutableHashMap *) mimeHeaderMapWithHeaders: (NSDictionary *) _headers if (inReplyTo) [map setObject: inReplyTo forKey: @"in-reply-to"]; + if (references) + [map setObject: references forKey: @"references"]; + /* add subject */ if ([(s = [headers objectForKey: @"subject"]) length] > 0) [map setObject: [s asQPSubjectString: @"utf-8"] diff --git a/SoObjects/Mailer/SOGoMailObject.h b/SoObjects/Mailer/SOGoMailObject.h index 7fab49161e..b8b333d981 100644 --- a/SoObjects/Mailer/SOGoMailObject.h +++ b/SoObjects/Mailer/SOGoMailObject.h @@ -97,6 +97,7 @@ extern NSArray *SOGoMailCoreInfoKeys; - (NSString *) cc; - (NSString *) from; - (NSString *) inReplyTo; +- (NSString *) references; - (NSString *) messageId; - (NSString *) received;