diff --git a/ChangeLog b/ChangeLog index ee6cebee9..45ee2293e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2007-10-25 Wolfgang Sourdeau + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -stringForData:_datapartInfo:_info]): simplified by invoking + -bodyDataFromEncoding: from our new NSData category methods. + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -fetchMailForEditing:sourceMail]): work-around a bug in SOPE-mime where only the body part of the first of the keys fetched was diff --git a/SoObjects/Mailer/SOGoMailObject.m b/SoObjects/Mailer/SOGoMailObject.m index cd2e8d481..86eb94e8e 100644 --- a/SoObjects/Mailer/SOGoMailObject.m +++ b/SoObjects/Mailer/SOGoMailObject.m @@ -31,10 +31,8 @@ #import #import #import -#import #import #import -#import #import #import #import @@ -44,6 +42,8 @@ #import #import + +#import "NSData+Mail.h" #import "SOGoMailFolder.h" #import "SOGoMailAccount.h" #import "SOGoMailManager.h" @@ -619,37 +619,29 @@ static BOOL debugSoParts = NO; } /* convert parts to strings */ - - (NSString *) stringForData: (NSData *) _data partInfo: (NSDictionary *) _info { - NSString *charset, *encoding, *s; + NSString *charset, *s; NSData *mailData; - if (![_data isNotNull]) - return nil; - - s = nil; - - encoding = [[_info objectForKey: @"encoding"] lowercaseString]; - - if ([encoding isEqualToString: @"7bit"] - || [encoding isEqualToString: @"8bit"]) - mailData = _data; - else if ([encoding isEqualToString: @"base64"]) - mailData = [_data dataByDecodingBase64]; - else if ([encoding isEqualToString: @"quoted-printable"]) - mailData = [_data dataByDecodingQuotedPrintable]; - - charset = [[_info valueForKey: @"parameterList"] valueForKey: @"charset"]; - if (![charset length]) + if ([_data isNotNull]) { - s = [[NSString alloc] initWithData:mailData encoding:NSUTF8StringEncoding]; - [s autorelease]; + mailData + = [_data bodyDataFromEncoding: [_info objectForKey: @"encoding"]]; + + charset = [[_info valueForKey: @"parameterList"] valueForKey: @"charset"]; + if (![charset length]) + { + s = [[NSString alloc] initWithData: mailData encoding: NSUTF8StringEncoding]; + [s autorelease]; + } + else + s = [NSString stringWithData: mailData + usingEncodingNamed: charset]; } else - s = [NSString stringWithData: mailData - usingEncodingNamed: charset]; + s = nil; return s; }