Monotone-Parent: 76da8aec6316337cc5bf03ff7940ad6b6e408b2f

Monotone-Revision: 59f0f480bdfbd6070fd3e31647f083f47262153b

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2006-11-07T20:15:20
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2006-11-07 20:15:20 +00:00
parent 50b2ececb6
commit 387d5189de
2 changed files with 55 additions and 14 deletions

View File

@@ -1,5 +1,12 @@
2006-11-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
-asQPSubjectString]): new method that returns the special QP
string with its qp declaration for email subjects.
([SOGoDraftObject -bodyPartForText])
([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): don't
double-encode data in UTF-8.
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
-newStartDate]): new method to determine the start date depending
on the URL parameters, the current day and the current time.

View File

@@ -28,11 +28,46 @@
#include <NGMime/NGMimeFileData.h>
#include <NGMime/NGMimeMultipartBody.h>
#include <NGMime/NGMimeType.h>
#include <NGMime/NGMimeHeaderFieldGenerator.h>
#include <NGImap4/NGImap4Envelope.h>
#include <NGImap4/NGImap4EnvelopeAddress.h>
#include <NGExtensions/NSFileManager+Extensions.h>
#include "common.h"
@interface NSString (NGMimeHelpers)
- (NSString *) asQPSubjectString;
@end
@implementation NSString (NGMimeHelpers)
- (NSString *) asQPSubjectString
{
NSString *qpString;
unsigned char *data, *dest;
unsigned int dataLen, destLen;
dataLen = [self length];
data = malloc(dataLen * sizeof(unsigned char*));
*(data + dataLen - 1) = 0;
[self getCString: data];
destLen = dataLen * 3;
dest = malloc(dataLen * 3 * sizeof(unsigned char*));
*(dest + destLen - 1) = 0;
NGEncodeQuotedPrintableMime (data, dataLen, dest, destLen);
qpString = [NSString stringWithFormat: @"=?utf-8?Q?%s?=", dest];
free (data);
free (dest);
return qpString;
}
@end
@implementation SOGoDraftObject
static NGMimeType *TextPlainType = nil;
@@ -274,7 +309,8 @@ static NSString *fromInternetSuffixPattern = nil;
/* NGMime representations */
- (NGMimeBodyPart *)bodyPartForText {
- (NGMimeBodyPart *)bodyPartForText
{
/*
This add the text typed by the user (the primary plain/text part).
*/
@@ -295,7 +331,7 @@ static NSString *fromInternetSuffixPattern = nil;
if ((body = [lInfo objectForKey:@"text"]) != nil) {
if ([body isKindOfClass:[NSString class]]) {
[map setObject:@"text/plain; charset=utf-8" forKey:@"content-type"];
body = [body dataUsingEncoding:NSUTF8StringEncoding];
// body = [body dataUsingEncoding:NSUTF8StringEncoding];
}
}
@@ -306,7 +342,8 @@ static NSString *fromInternetSuffixPattern = nil;
return bodyPart;
}
- (NGMimeMessage *)mimeMessageForContentWithHeaderMap:(NGMutableHashMap *)map {
- (NGMimeMessage *)mimeMessageForContentWithHeaderMap:(NGMutableHashMap *)map
{
NSDictionary *lInfo;
NGMimeMessage *message;
WOContext *ctx;
@@ -336,13 +373,12 @@ static NSString *fromInternetSuffixPattern = nil;
/* Note: just 'utf8' is displayed wrong in Mail.app */
[map setObject:@"text/plain; charset=utf-8" forKey:@"content-type"];
body = [body dataUsingEncoding:NSUTF8StringEncoding];
// body = [body dataUsingEncoding:NSUTF8StringEncoding];
}
else if ([body isKindOfClass:[NSData class]] && addSuffix) {
body = [[body mutableCopy] autorelease];
[(NSMutableData *)body appendData:
[fromInternetSuffix dataUsingEncoding:
NSUTF8StringEncoding]];
[(NSMutableData *)body
appendData: [fromInternetSuffix dataUsingEncoding:NSUTF8StringEncoding]];
}
else if (addSuffix) {
[self warnWithFormat:@"Note: cannot add Internet marker to body: %@",
@@ -350,7 +386,7 @@ static NSString *fromInternetSuffixPattern = nil;
}
}
else if (addSuffix)
body = [fromInternetSuffix dataUsingEncoding:NSUTF8StringEncoding];
body = fromInternetSuffix;
message = [[[NGMimeMessage alloc] initWithHeader:map] autorelease];
[message setBody:body];
@@ -374,11 +410,9 @@ static NSString *fromInternetSuffixPattern = nil;
NSString *s;
s = [self mimeTypeForExtension:[_name pathExtension]];
if ([_name length] > 0) {
s = [s stringByAppendingString:@"; name=\""];
s = [s stringByAppendingString:_name];
s = [s stringByAppendingString:@"\""];
}
if ([_name length] > 0)
s = [s stringByAppendingFormat:@"; name=\"%@\"", _name];
return s;
}
- (NSString *)contentDispositionForAttachmentWithName:(NSString *)_name {
@@ -624,7 +658,7 @@ static NSString *fromInternetSuffixPattern = nil;
/* add subject */
if ([(s = [lInfo objectForKey:@"subject"]) length] > 0)
[map setObject:s forKey:@"subject"];
[map setObject: [s asQPSubjectString] forKey:@"subject"];
/* add standard headers */