1

在我的应用程序中,我需要使用 SKPSMTPMessage 附加视频。起初,我从Dunja 的代码中了解到,

NSData *videoData = [NSData dataWithContentsOfFile: videoPath];

NSDictionary *videoPart = [NSDictionary dictionaryWithObjectsAndKeys:@"video/quicktime;\r\n\tx-unix-mode=0644;\r\n\tname=\"video.mov\"",kSKPSMTPPartContentTypeKey,
                                     @"attachment;\r\n\tfilename=\"video.mov\"",kSKPSMTPPartContentDispositionKey,[videoData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil];

但这就是行不通。我尝试了所有可以想象的解决方案。最后,我更改了 videoData 的编码类型:从

... [videoData encodeBase64ForData],kSKPSMTPPartMessageKey ...

... [videoData encodeWrappedBase64ForData],kSKPSMTPPartMessageKey ...

它有效!

我不知道这两个api有什么区别,有人可以帮我吗?再次感谢 Dunja,我从您的代码中学到了很多东西。

4

1 回答 1

0

看看这个答案:GMail 不会打开 iPhone App 创建的 .txt 附件,取决于大小 - 我认为我的 MIME 中有一个错误

一个名为encodeBase64ForDataWrapped 的函数添加了换行符。也许您应该改为调用它,如果您的附件足够长,那么长的 base64 行会使某人感到困惑。

在这里你可以看到两者的源代码:http ://code.google.com/p/skpsmtpmessage/source/browse/trunk/SMTPSender/Classes/NSData%2BBase64Additions.m

于 2013-09-04T14:16:31.380 回答