Вложение электронной почты, отправленное с использованием SKPSMTPMessage, отображается в почтовом клиенте iOS как контакт - PullRequest
0 голосов
/ 02 апреля 2012

Я протестировал код для отправки вложений с помощью этой полезной библиотеки:

Библиотека Skpsmtpmessage

Кажется, что письмо отправлено правильно, и когда я просматриваю его с помощью клиентов hotmail или gmail, я вижу изображение jpeg. Однако, когда я просматриваю это же письмо через почтовый клиент iOS, вложение отображается как «контакт», и при нажатии на него появляется возможность сохранить файл как новый контакт.

Я попытался отправить электронное письмо с приложением jpeg из hotmail, и когда я это делаю, оно правильно отображается в клиенте iOS.

Кто-нибудь знает, неправильно ли это код или iOS?

//the guts of the message.
SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init];
testMsg.fromEmail = @"aname@gmail.com";
testMsg.toEmail = @"aname@gmail.com";
testMsg.relayHost = @"smtp.gmail.com";
testMsg.requiresAuth = YES;
testMsg.login = @"aname@gmail.com";
testMsg.pass = @"password";
testMsg.subject = @"The message subject";
testMsg.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS!

// Only do this for self-signed certs!
// testMsg.validateSSLChain = NO;
testMsg.delegate = self;

//email contents
NSDate* now = [NSDate date];
NSString * bodyMessage = [NSString stringWithFormat:@"The message body"];

// email image if it exists

NSString  *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/file.jpeg"];
NSFileManager *fileManager = [NSFileManager defaultManager];

NSMutableArray* parts = [[NSMutableArray alloc] init];

// add plain part
NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey,
                           bodyMessage ,kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];

[parts addObject: plainPart];


// add attachments
NSData *attachmentData = [NSData dataWithContentsOfFile:jpgPath]; 

NSString *directory = @"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\"file.jpeg\"";
NSString *attachment = @"attachment;\r\n\tfilename=\"file.jpeg\"";

NSDictionary *image_part = [NSDictionary dictionaryWithObjectsAndKeys:
                                directory,kSKPSMTPPartContentTypeKey,
                                attachment,kSKPSMTPPartContentDispositionKey,
                                [attachmentData encodeBase64ForData],kSKPSMTPPartMessageKey,
                                @"base64",kSKPSMTPPartContentTransferEncodingKey,nil];

[parts addObject: image_part];
testMsg.parts = parts;
[testMsg send];

1 Ответ

1 голос
/ 10 октября 2012

Попробуйте изменить

 NSString *directory = @"text/directory;...

до

 NSString *directory = @"text/jpeg;...

Я надеюсь, что это работает для вас!

Штеффен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...