mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-02-17 07:33:57 +00:00
fix(mail): preoperly generates the message-id header value
This commit is contained in:
@@ -1627,7 +1627,7 @@ struct GlobalObjectId {
|
|||||||
|
|
||||||
[map setObject: dateReceived forKey: @"date"];
|
[map setObject: dateReceived forKey: @"date"];
|
||||||
|
|
||||||
messageId = [NSString generateMessageID];
|
messageId = [NSString generateMessageID: [identity objectForKey: @"email"]];
|
||||||
[map setObject: messageId forKey: @"message-id"];
|
[map setObject: messageId forKey: @"message-id"];
|
||||||
|
|
||||||
attachmentKeys = [self fetchFileAttachmentKeys];
|
attachmentKeys = [self fetchFileAttachmentKeys];
|
||||||
|
|||||||
@@ -885,7 +885,7 @@
|
|||||||
mailDate = [[NSCalendarDate date] rfc822DateString];
|
mailDate = [[NSCalendarDate date] rfc822DateString];
|
||||||
[headerMap setObject: mailDate forKey: @"date"];
|
[headerMap setObject: mailDate forKey: @"date"];
|
||||||
[headerMap setObject: subject forKey: @"subject"];
|
[headerMap setObject: subject forKey: @"subject"];
|
||||||
[headerMap setObject: [NSString generateMessageID] forKey: @"message-id"];
|
[headerMap setObject: [NSString generateMessageID: senderEmail] forKey: @"message-id"];
|
||||||
if ([msgType length] > 0)
|
if ([msgType length] > 0)
|
||||||
[headerMap setObject: msgType forKey: @"x-sogo-message-type"];
|
[headerMap setObject: msgType forKey: @"x-sogo-message-type"];
|
||||||
msg = [NGMimeMessage messageWithHeader: headerMap];
|
msg = [NGMimeMessage messageWithHeader: headerMap];
|
||||||
@@ -974,7 +974,7 @@
|
|||||||
[headerMap setObject: mailDate forKey: @"date"];
|
[headerMap setObject: mailDate forKey: @"date"];
|
||||||
[headerMap setObject: [[p getSubject] asQPSubjectString: @"UTF-8"]
|
[headerMap setObject: [[p getSubject] asQPSubjectString: @"UTF-8"]
|
||||||
forKey: @"subject"];
|
forKey: @"subject"];
|
||||||
[headerMap setObject: [NSString generateMessageID] forKey: @"message-id"];
|
[headerMap setObject: [NSString generateMessageID: [[attendee mailAddress] pureEMailAddress]] forKey: @"message-id"];
|
||||||
[headerMap setObject: @"1.0" forKey: @"MIME-Version"];
|
[headerMap setObject: @"1.0" forKey: @"MIME-Version"];
|
||||||
|
|
||||||
if (textOnly)
|
if (textOnly)
|
||||||
@@ -1163,7 +1163,7 @@
|
|||||||
mailDate = [[NSCalendarDate date] rfc822DateString];
|
mailDate = [[NSCalendarDate date] rfc822DateString];
|
||||||
[headerMap setObject: mailDate forKey: @"date"];
|
[headerMap setObject: mailDate forKey: @"date"];
|
||||||
[headerMap setObject: [page getSubject] forKey: @"subject"];
|
[headerMap setObject: [page getSubject] forKey: @"subject"];
|
||||||
[headerMap setObject: [NSString generateMessageID] forKey: @"message-id"];
|
[headerMap setObject: [NSString generateMessageID: senderEmail] forKey: @"message-id"];
|
||||||
[headerMap setObject: @"1.0" forKey: @"MIME-Version"];
|
[headerMap setObject: @"1.0" forKey: @"MIME-Version"];
|
||||||
[headerMap setObject: @"text/html; charset=utf-8"
|
[headerMap setObject: @"text/html; charset=utf-8"
|
||||||
forKey: @"content-type"];
|
forKey: @"content-type"];
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
@interface NSString (SOGoExtension)
|
@interface NSString (SOGoExtension)
|
||||||
|
|
||||||
+ (NSString *) generateMessageID;
|
+ (NSString *) generateMessageID: (NSString *) mailOrDomain;
|
||||||
- (NSString *) htmlToText;
|
- (NSString *) htmlToText;
|
||||||
- (NSString *) htmlByExtractingImages: (NSMutableArray *) theImages;
|
- (NSString *) htmlByExtractingImages: (NSMutableArray *) theImages;
|
||||||
- (NSString *) stringByConvertingCRLNToHTML;
|
- (NSString *) stringByConvertingCRLNToHTML;
|
||||||
|
|||||||
@@ -560,15 +560,27 @@
|
|||||||
|
|
||||||
@implementation NSString (SOGoExtension)
|
@implementation NSString (SOGoExtension)
|
||||||
|
|
||||||
+ (NSString *) generateMessageID
|
+ (NSString *) generateMessageID: (NSString *) mailOrDomain
|
||||||
{
|
{
|
||||||
NSMutableString *messageID;
|
NSMutableString *messageID;
|
||||||
NSString *pGUID;
|
NSString *_domain;
|
||||||
|
NSRange r;
|
||||||
|
|
||||||
messageID = [NSMutableString string];
|
messageID = [NSMutableString string];
|
||||||
[messageID appendFormat: @"<%@", [SOGoObject globallyUniqueObjectId]];
|
[messageID appendFormat: @"<%@", [SOGoObject mailUniqueMessageId]];
|
||||||
pGUID = [[NSProcessInfo processInfo] globallyUniqueString];
|
if(mailOrDomain)
|
||||||
[messageID appendFormat: @"@%u>", (unsigned int)[pGUID hash]];
|
{
|
||||||
|
r = [mailOrDomain rangeOfString: @"@" options: NSBackwardsSearch];
|
||||||
|
if (r.location != NSNotFound)
|
||||||
|
{
|
||||||
|
//Its the full email not a domain
|
||||||
|
_domain = [mailOrDomain substringFromIndex: (r.location + r.length)];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_domain = mailOrDomain;
|
||||||
|
[messageID appendFormat: @"@%@>", _domain];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return [messageID lowercaseString];
|
return [messageID lowercaseString];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ static NSString *userAgent = nil;
|
|||||||
messageID = [headers objectForKey: @"message-id"];
|
messageID = [headers objectForKey: @"message-id"];
|
||||||
if (!messageID)
|
if (!messageID)
|
||||||
{
|
{
|
||||||
messageID = [NSString generateMessageID];
|
messageID = [NSString generateMessageID: [[newHeaders objectForKey: @"from"] pureEMailAddress]];
|
||||||
[headers setObject: messageID forKey: @"message-id"];
|
[headers setObject: messageID forKey: @"message-id"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,6 +48,7 @@
|
|||||||
@class NSException;
|
@class NSException;
|
||||||
@class NSTimeZone;
|
@class NSTimeZone;
|
||||||
@class NSURL;
|
@class NSURL;
|
||||||
|
@class NSUUID;
|
||||||
|
|
||||||
@class WOContext;
|
@class WOContext;
|
||||||
@class WORequest;
|
@class WORequest;
|
||||||
@@ -74,6 +75,9 @@
|
|||||||
+ (NSString *) globallyUniqueObjectId;
|
+ (NSString *) globallyUniqueObjectId;
|
||||||
- (NSString *) globallyUniqueObjectId;
|
- (NSString *) globallyUniqueObjectId;
|
||||||
|
|
||||||
|
+ (NSString *) mailUniqueMessageId;
|
||||||
|
- (NSString *) mailUniqueMessageId;
|
||||||
|
|
||||||
+ (id) objectWithName: (NSString *)_name inContainer:(id)_container;
|
+ (id) objectWithName: (NSString *)_name inContainer:(id)_container;
|
||||||
|
|
||||||
- (id) initWithName: (NSString *) _name inContainer:(id)_container;
|
- (id) initWithName: (NSString *) _name inContainer:(id)_container;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#import <unistd.h>
|
#import <unistd.h>
|
||||||
|
#import <sys/random.h>
|
||||||
|
|
||||||
|
|
||||||
#import <NGObjWeb/SoClass.h>
|
#import <NGObjWeb/SoClass.h>
|
||||||
@@ -111,11 +112,28 @@
|
|||||||
pid, (int) f, sequence++, (int) rndm];
|
pid, (int) f, sequence++, (int) rndm];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (NSString *) globallyUniqueObjectId
|
- (NSString *) globallyUniqueObjectId
|
||||||
{
|
{
|
||||||
return [[self class] globallyUniqueObjectId];
|
return [[self class] globallyUniqueObjectId];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (NSString *) mailUniqueMessageId
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
843F8180-4E33-7B0B-6F1B-9847CAD3E6EB
|
||||||
|
*/
|
||||||
|
return [[NSUUID UUID] UUIDString];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *) mailUniqueMessageId
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
843F8180-4E33-7B0B-6F1B-9847CAD3E6EB
|
||||||
|
*/
|
||||||
|
return [[self class] mailUniqueMessageId];
|
||||||
|
}
|
||||||
|
|
||||||
/* containment */
|
/* containment */
|
||||||
|
|
||||||
+ (id) objectWithName: (NSString *)_name inContainer:(id)_container
|
+ (id) objectWithName: (NSString *)_name inContainer:(id)_container
|
||||||
|
|||||||
Reference in New Issue
Block a user