#
# old_revision [9fcf97eb10d5be9ee65cc8ce8bf5651e02b25534]
#
# patch "sope-mime/NGMail/NGMailAddressParser.h"
#  from [24b3288dfb1dd3b55db39562b58c17f89760960c]
#    to [7594a40e7152dc0dfe5f6e8fecb20fdce0895b4b]
# 
# patch "sope-mime/NGMail/NGMailAddressParser.m"
#  from [79eb483d27176206aaa9ec109fab7b99957ee30f]
#    to [a9d54e0521c106939819dc163c2a08657ae22ad2]
#
============================================================
--- sope-mime/NGMail/NGMailAddressParser.h	24b3288dfb1dd3b55db39562b58c17f89760960c
+++ sope-mime/NGMail/NGMailAddressParser.h	7594a40e7152dc0dfe5f6e8fecb20fdce0895b4b
@@ -46,6 +46,7 @@
 + (id)mailAddressParserWithData:(NSData *)_data;
 + (id)mailAddressParserWithCString:(const char *)_cString;
 - (id)initWithString:(NSString *)_str;
++ (id)sanitizeMailAddresses:(NSString *)_string;
 
 /* parsing */
 
============================================================
--- sope-mime/NGMail/NGMailAddressParser.m	79eb483d27176206aaa9ec109fab7b99957ee30f
+++ sope-mime/NGMail/NGMailAddressParser.m	a9d54e0521c106939819dc163c2a08657ae22ad2
@@ -362,12 +362,110 @@ static inline id parseDomainLiteral(NGMa
 }
 
 + (id)mailAddressParserWithString:(NSString *)_string {
-  return [[(NGMailAddressParser *)[self alloc] initWithString:_string] 
+
+  return [[(NGMailAddressParser *)[self alloc] initWithString: [NGMailAddressParser sanitizeMailAddresses:_string]] 
 	   autorelease];
 }
 
++ (id) sanitizeMailAddresses:(NSString *)_string {
+
+    // Before init ... full replacement of quotes and double quotes - we don't need them anymore ;-)
+    NSMutableString* _addr = [NSMutableString stringWithString:_string];
+    [_addr replaceString:@"'" withString:@""];
+    [_addr replaceString:@"\"" withString:@""];
+    NSString* addresses = (NSString *)_addr;
+    
+    // Init
+    BOOL isDisplayNameEnd = NO;
+    BOOL hasAt = NO;
+    long lastPos = 0;
+    long displayNameEndPos = 0;
+    long mailEndPos = 0;
+    long len = [addresses length];
+    NSString* mailAdr= @"";
+    NSString* displayName = @"";
+    NSMutableArray* _addressList = [NSMutableArray arrayWithCapacity:1];
+    
+    
+    // step through the chars
+    long i;
+    for (i=0; i < len; i++) {
+        char cai = [addresses characterAtIndex:i]; // get every char
+      
+        if(cai == ' ') continue; // skip spaces
+
+        
+        if (cai == '@') {
+            hasAt = YES;
+            continue;
+        }
+        
+        if(cai == '<')
+        {
+            isDisplayNameEnd = YES;
+            displayNameEndPos = i;
+        }
+        
+        if(cai == '>')
+        {
+            mailEndPos = i;
+        }
+        
+        if ((cai == ',' && hasAt) || ((i + 1) == len)) {
+            
+            mailAdr = @"";
+            displayName = @"";
+            
+            if(isDisplayNameEnd)
+            {
+                displayName = [[addresses substringWithRange: NSMakeRange(lastPos, displayNameEndPos - lastPos)] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
+            }
+            
+            // If there a displayname, get mailAdr on an other way
+            if([displayName length] > 0)
+            {
+                mailAdr = [[addresses stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]] substringWithRange: NSMakeRange(displayNameEndPos + 1, mailEndPos - displayNameEndPos - 1)];
+            }
+            else
+            {
+                mailAdr = [[addresses substringWithRange: NSMakeRange(lastPos, i-lastPos)] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
+            }
+
+            // trim spaces of mailAdr
+            mailAdr = [mailAdr stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
+        
+
+            // Format new mail string into an array
+            if([displayName length] == 0)
+            {
+                [_addressList addObject: [NSString stringWithFormat:@"%@",mailAdr]];
+            }
+            else
+            {
+                [_addressList addObject: [NSString stringWithFormat:@"\"%@\" <%@>",displayName,mailAdr]];    
+            }
+            
+            
+            // Reset and set
+            lastPos = i+1;
+            hasAt = NO;
+            isDisplayNameEnd = NO;   
+            
+            // next step ;-)
+            continue;
+        }
+        
+    }
+    
+    // Concatenate the array items to a string by comma and returns it
+    return [_addressList componentsJoinedByString:@","];
+}
+
 - (id)initWithString:(NSString *)_str {
   if ((self = [super init])) {
+
+    _str = [NGMailAddressParser sanitizeMailAddresses:_str];
+
     // TODO: remember some string encoding?
     self->maxLength = [_str length];
     self->data      = malloc(self->maxLength*sizeof(unichar));
