MFMailComposeViewController大型Pdfs附件卡住了

时间:2016-01-07 16:54:15

标签: ios objective-c email mfmailcomposer

所以我使用MFMailComposeViewController将pdf文件附加到电子邮件中,并使用使用交换帐户设置的默认iOS邮件应用程序将其发送出去。

如果我发送的文件大小 4863K ,则效果非常好。一切都按预期发展。

如果我发送的文件大小 5688K ,它似乎正常工作并获得MFMailComposeResultSent,结果会发回给代表。

但是,邮件永远不会到达,当我查看邮件应用程序时,我发现邮件卡在发件箱中时出现以下错误:

  

服务器拒绝了该消息

超级奇怪的是,当我尝试重新发送来自发件箱的消息时,它发送完全正常并且不再提供错误消息。

我有点在我的智慧结束,并没有第一个线索可能出错的地方。显然,我无法用苹果的代码来解决这个问题,但似乎有许多我可能搞砸的MFMailComposeViewController选项。

代码非常简单:

- (void) setAttachments:(NSArray*)attatchments
                ofDraft:(MFMailComposeViewController*)draft
{
  if (attatchments)
  {
    for (NSString* path in attatchments)
    {
        NSData* data = [self getDataForAttachmentPath:path];

        NSString* basename = [self getBasenameFromAttachmentPath:path];
        NSString* pathExt  = [basename pathExtension];
        NSString* fileName = [basename pathComponents].lastObject;
        NSString* mimeType = [self getMimeTypeFromFileExtension:pathExt];

        // Couldn't find mimeType, must be some type of binary data
        if (mimeType == nil) mimeType = @"application/octet-stream";

        [draft addAttachmentData:data mimeType:mimeType fileName:fileName];
    }
  }
}

这适用于较小的文件这一事实意味着我对此代码没有任何问题,并且它被复制出一个看起来相当广泛使用的cordova插件。但无论出于何种原因,超过 ~5MB 的文件都没有明显的原因失败。

感谢您的帮助。

更新 我捕获了http流量并发现在使用MFMailComposeViewController发送邮件的情况下,POST请求的内容长度为0,这是不允许的,因此服务器返回400错误。当我尝试直接从邮件应用程序重新发送相同的邮件时,内容长度是预期的大小。

这似乎是MessageUI框架的限制,但我无法验证Apple是否存在普遍限制。

0 个答案:

没有答案