mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-10 09:21:23 +00:00
Merge pull request #334 from tfux/5330
fix(eas): ensure correct encoding of attachments(fixes #5330)
This commit is contained in:
@@ -63,6 +63,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#import <NGMime/NGMimeBodyPart.h>
|
||||
#import <NGMime/NGMimeFileData.h>
|
||||
#import <NGMime/NGMimeType.h>
|
||||
#import <NGMime/NGMimeHeaderFields.h>
|
||||
#import <NGMime/NGMimeMultipartBody.h>
|
||||
#import <NGMime/NGConcreteMimeType.h>
|
||||
#import <NGMail/NGMimeMessageParser.h>
|
||||
@@ -4027,6 +4028,7 @@ void handle_eas_terminate(int signum)
|
||||
for (j = 0; j < [aparts count]; j++)
|
||||
{
|
||||
apart = [aparts objectAtIndex: j];
|
||||
|
||||
if ([[[apart contentType] type] isEqualToString: @"text"] && [[[apart contentType] subType] isEqualToString: @"html"])
|
||||
htmlPart = apart;
|
||||
if ([[[apart contentType] type] isEqualToString: @"text"] && [[[apart contentType] subType] isEqualToString: @"plain"])
|
||||
@@ -4035,12 +4037,23 @@ void handle_eas_terminate(int signum)
|
||||
}
|
||||
else
|
||||
{
|
||||
if ([[[part contentType] type] isEqualToString: @"text"] && [[[part contentType] subType] isEqualToString: @"html"])
|
||||
if ([[(NGMimeContentDispositionHeaderField *)[part headerForKey: @"content-disposition"] type] hasPrefix: @"attachment"])
|
||||
{
|
||||
if ([[part body] isKindOfClass: [NSData class]] && ! [[[part contentType] type] isEqualToString: @"text"])
|
||||
{
|
||||
// Ensure base64 encoding of non-text parts - text parts are encoded individually.
|
||||
[part setHeader: @"base64" forKey: @"content-transfer-encoding"];
|
||||
[part setBody: [[part body] dataByEncodingBase64]];
|
||||
[part setHeader: [NSString stringWithFormat:@"%d", (int)[[part body] length]]
|
||||
forKey: @"content-length"];
|
||||
}
|
||||
|
||||
[attachments addObject: part];
|
||||
}
|
||||
else if ([[[part contentType] type] isEqualToString: @"text"] && [[[part contentType] subType] isEqualToString: @"html"])
|
||||
htmlPart = part;
|
||||
else if ([[[part contentType] type] isEqualToString: @"text"] && [[[part contentType] subType] isEqualToString: @"plain"])
|
||||
textPart = part;
|
||||
else
|
||||
[attachments addObject: part];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user