diff --git a/ChangeLog b/ChangeLog index af0e05b8b..b3e2aaca9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2010-08-26 Wolfgang Sourdeau + * SoObjects/SOGo/NSString+Utilities.m (-asQPSubjectString:): we + use "NGEncodeQuotedPrintableMime" instead of + "dataByEncodingQuotedPrintable" (NGQuotedPrintableCoding), as it's + more suited for email header fields. + * SoObjects/Mailer/SOGoDraftObject.m (_quoteSpecials:): now work on single strings. (_quoteSpecialsInArray:): new method that offers the same diff --git a/SoObjects/SOGo/NSString+Utilities.m b/SoObjects/SOGo/NSString+Utilities.m index 108bc508f..b59b58291 100644 --- a/SoObjects/SOGo/NSString+Utilities.m +++ b/SoObjects/SOGo/NSString+Utilities.m @@ -22,14 +22,15 @@ #import #import +#import #import #import #import #import -#import +#import #import "NSArray+Utilities.h" #import "NSDictionary+BSJSONAdditions.h" #import "NSDictionary+URL.h" @@ -392,10 +393,21 @@ static int cssEscapingCount; { NSString *qpString, *subjectString; NSData *subjectData, *destSubjectData; + NSUInteger length, destLength; + unsigned char *destString; +#warning "encoding" parameter is not useful subjectData = [self dataUsingEncoding: NSUTF8StringEncoding]; - destSubjectData = [subjectData dataByEncodingQuotedPrintable]; + length = [subjectData length]; + destLength = length * 3; + destString = calloc (destLength, sizeof (char)); + NGEncodeQuotedPrintableMime ([subjectData bytes], length, + destString, destLength); + + destSubjectData = [NSData dataWithBytesNoCopy: destString + length: strlen ((char *) destString) + freeWhenDone: YES]; qpString = [[NSString alloc] initWithData: destSubjectData encoding: NSASCIIStringEncoding]; [qpString autorelease];