]> err.no Git - sope/commitdiff
applied patch in bug #1873
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 28 May 2007 12:56:19 +0000 (12:56 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 28 May 2007 12:56:19 +0000 (12:56 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1486 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-mime/ChangeLog
sope-mime/NGMime/ChangeLog
sope-mime/NGMime/NGMimeBodyGenerator.m
sope-mime/Version

index 83519a8d0100991f46f51b83f00ae32a8e890915..9cc785d15c5d01af88d98f1f7ad36a699d0c696d 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-15  Wolfgang Sourdeau  <WSourdeau@Inverse.CA>
+
+       * NGMime.m: encode string body contents using the charset
+         of the content-type (when available) (OGo bug #1873) (v4.7.245)
+
 2007-05-28  Helge Hess  <helge.hess@opengroupware.org>
 
        * NGImap4: changed behaviour wrt bug 1875 (v4.7.244)
index b456cf0522792feef8dd4063f8c93817ad758cd2..e255405eb86151585d9cfb335c7554b2cd38f4be 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-15  Wolfgang Sourdeau  <WSourdeau@Inverse.CA>
+
+       * NGMimeBodyGenerator.m: encode string body contents using the charset
+         of the content-type (when available) (OGo bug #1873)
+
 2006-02-22  Helge Hess  <helge.hess@opengroupware.org>
        
        * NGMimeRFC822DateHeaderFieldParser.m: added hardcoded detection for
index 09310ed7db8b5a1188819bb95fb52d6393847cfa..39fc4020dd8cb88d47eb10220bd00cce6d07a2d8 100644 (file)
@@ -1,5 +1,6 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2007 SKYRIX Software AG
+  Copyright (C) 2007      Helge Hess
 
   This file is part of SOPE.
 
@@ -97,6 +98,25 @@ static BOOL debugOn = NO;
             NSStringFromClass([self superclass]), [super version]);
 }
 
+- (NSStringEncoding)_encodingFromContentType:(NGMimeType *)_type {
+  NSStringEncoding encoding;
+  NSString *charset;
+
+  encoding = [NSString defaultCStringEncoding];
+  if (_type != nil) {
+    charset = [_type valueOfParameter: @"charset"];
+    if ([charset length] > 0) {
+      if ([charset isEqualToString: @"utf-8"])
+       encoding = NSUTF8StringEncoding;
+      else if ([charset isEqualToString: @"iso-8859-1"])
+       encoding = NSISOLatin1StringEncoding;
+      /* more should be handled here */
+    }
+  }
+    
+  return encoding;
+}
+
 - (NSData *)generateBodyOfPart:(id<NGMimePart>)_part
   additionalHeaders:(NGMutableHashMap *)_addHeaders
   delegate:(id)_delegate
@@ -105,14 +125,12 @@ static BOOL debugOn = NO;
   NSData           *data;
   id               body;
   
-  encoding = [NSString defaultCStringEncoding];
+  encoding = [self _encodingFromContentType: [_part contentType]];
   body     = [_part body];
   data     = nil;
   
-  if ([body isKindOfClass:[NSString class]]) {
-    // TODO: deal with charset in content-type!
+  if ([body isKindOfClass:[NSString class]])
     data = [body dataUsingEncoding:encoding];
-  }
   else if ([body respondsToSelector:@selector(bytes)])
     data = body;
   else if ([body respondsToSelector:@selector(dataUsingEncoding:)])
index 5afd15393f2c254936e0eb63f9edc0d603b9d3d6..e00a62276ca4a058c4a56af5dfbf66b768671a36 100644 (file)
@@ -2,7 +2,7 @@
 
 MAJOR_VERSION:=4
 MINOR_VERSION:=7
-SUBMINOR_VERSION:=244
+SUBMINOR_VERSION:=245
 
 # v4.5.214 requires libNGExtensions v4.5.146
 # v4.2.149 requires libNGStreams    v4.2.34