views:

821

answers:

2

I'm using MFMailComposeViewController to send a file. Everything works fine with files under 15mb. Anything over, and the file simply doesn't get attached to the MFMailComposeViewController view. It's not that the email server isn't accepting, its that it never gets attached in the first place.

Does anyone have any ideas if there's a way to resolve that?

I know many email services can't handle attachments over 5 or 10mb, but other services allow you much larger file size.

MFMailComposeViewController *mail = [[[MFMailComposeViewController alloc] init] autorelease];
mail.mailComposeDelegate = self;
NSString* path = [NSString stringWithFormat:@"%@/%@/%@", NSHomeDirectory(), @"Documents", fileName];
NSData *data = [NSData dataWithContentsOfMappedFile:path]; //also tried dataWithContentsOfFile with same results
[mail addAttachmentData:data mimeType:@"audio/x-caf" fileName:[NSString stringWithFormat:@"%@.caf", label]];
[appDelegate.tabBarController presentModalViewController:mail animated:YES];
+1  A: 

Loading a 15 MB anything into RAM on a pre-2009 iPhone or iPod is going to really push the limits of your process's available memory, so it's not surprising there's a cap. I wouldn't try to convince the compose view to accept a larger attachment; instead, I'd suggest you transfer the file to some external server and either e-mail a link to it or send the mail from there.

Brent Royal-Gordon
shouldn't the point of using dataWithContentsOfMappedFile be that the email can be sent without actually reading the whole file into memory at one time?
David Maymudes
Whether this is possible or not also depends on whether the system's mail spooler is also able and willing to page off of disk; my guess is that it's building the whole MIME message in RAM anyways.
quixoto
A: 

Any work around for this limit, the dataWithContentsOfMappedFile for instance?

Michael