From ff9ea3b779b27baa9ddff5b7a79942980ab0f28a Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 7 Jan 2014 10:28:53 -0500 Subject: [PATCH] Don't alter the draft when saving it We must not extract inline HTML images when simply saving a draft. The images extraction process must only be performed when sending the message. --- SoObjects/Mailer/SOGoDraftObject.m | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/SoObjects/Mailer/SOGoDraftObject.m b/SoObjects/Mailer/SOGoDraftObject.m index 16246aec5..ce32d1307 100644 --- a/SoObjects/Mailer/SOGoDraftObject.m +++ b/SoObjects/Mailer/SOGoDraftObject.m @@ -1,5 +1,5 @@ /* - Copyright (C) 2007-2013 Inverse inc. + Copyright (C) 2007-2014 Inverse inc. Copyright (C) 2004-2005 SKYRIX Software AG This file is part of SOGo. @@ -1587,6 +1587,7 @@ static NSString *userAgent = nil; // - (NGMimeMessage *) mimeMessageWithHeaders: (NSDictionary *) _headers excluding: (NSArray *) _exclude + extractingImages: (BOOL) _extractImages { NSMutableArray *bodyParts; NGMimeMessage *message; @@ -1596,13 +1597,16 @@ static NSString *userAgent = nil; message = nil; bodyParts = [NSMutableArray array]; - newText = [text htmlByExtractingImages: bodyParts]; - if ([bodyParts count]) - [self setText: newText]; + if (_extractImages) + { + newText = [text htmlByExtractingImages: bodyParts]; + if ([bodyParts count]) + [self setText: newText]; + } map = [self mimeHeaderMapWithHeaders: _headers - excluding: _exclude]; + excluding: _exclude]; if (map) { //[self debugWithFormat: @"MIME Envelope: %@", map]; @@ -1625,15 +1629,15 @@ static NSString *userAgent = nil; } // -// +// Return a NGMimeMessage object with inline HTML images () extracted as attachments (). // - (NGMimeMessage *) mimeMessage { - return [self mimeMessageWithHeaders: nil excluding: nil]; + return [self mimeMessageWithHeaders: nil excluding: nil extractingImages: YES]; } // -// +// Return a NSData object of the message with no alteration. // - (NSData *) mimeMessageAsData { @@ -1641,7 +1645,7 @@ static NSString *userAgent = nil; NSData *message; generator = [NGMimeMessageGenerator new]; - message = [generator generateMimeFromPart: [self mimeMessage]]; + message = [generator generateMimeFromPart: [self mimeMessageWithHeaders: nil excluding: nil extractingImages: NO]]; [generator release]; return message; @@ -1714,9 +1718,8 @@ static NSString *userAgent = nil; NGMimeMessageGenerator *generator; generator = [[[NGMimeMessageGenerator alloc] init] autorelease]; - message = [generator generateMimeFromPart: [self mimeMessageWithHeaders: nil - excluding: nil]]; - + message = [generator generateMimeFromPart: [self mimeMessage]]; + // // We now look for the Bcc: header. If it is present, we remove it. // Some servers, like qmail, do not remove it automatically.