我对这段代码感到很疯狂,它应该可以工作,但是当我收到邮件时没有附加文件,这是我的代码:
-(IBAction)mandar:(id)sender { MFMailComposeViewController *composer=[[MFMailComposeViewController alloc]init]; [composer setMailComposeDelegate:self]; if ([MFMailComposeViewController canSendMail]) { [composer setToRecipients:[NSArray arrayWithObjects:@"tuperroensalsa@hotmail.com",nil]]; [composer setSubject:@"Base de datos"]; [composer setMessageBody:@"Mensage" isHTML:NO]; [composer setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentPath = [searchPaths objectAtIndex:0]; NSString *path = [[NSString alloc] initWithFormat:@"%@/capturas.sqlite",documentPath]; NSString *Newpath = [[NSString alloc] initWithFormat:@"%@/newData.sqlite",documentPath]; [[NSFileManager defaultManager] copyItemAtPath:path toPath:Newpath error:nil]; NSData *data = [NSData dataWithContentsOfFile:Newpath]; [composer addAttachmentData:data mimeType:@"application/x-sqlite3" fileName:@"capturas.sqlite"]; [self presentModalViewController:composer animated:YES]; } else { UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Error" message:@"No se a podido mandar el mensage" delegate:self cancelButtonTitle:@"dismis" otherButtonTitles:nil,nil]; [alert show]; } }
路径没问题,数据库中有数据,我在编写邮件时也看到了文件,但没有任何内容到达我的邮箱.我猜问题就在这里
[composer addAttachmentData:data mimeType:@"application/x-sqlite3" fileName:@"capturas.sqlite"];
但不知道为什么它不起作用,thx的帮助
解决方法
我已经更新了答案:
Error sending database from xCode但似乎你没有检查它,无论如何这里它又是:
-(IBAction)mandar:(id)sender { MFMailComposeViewController *composer=[[MFMailComposeViewController alloc]init]; [composer setMailComposeDelegate:self]; if ([MFMailComposeViewController canSendMail]) { [composer setToRecipients:[NSArray arrayWithObjects:@"EMAIL Address here",nil]]; [composer setSubject:@"Base de datos"]; [composer setMessageBody:@"Mensage" isHTML:YES]; [composer setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,YES); // NSString *documentsDirectory = [paths objectAtIndex:0]; // NSString *file = [documentsDirectory stringByAppendingPathComponent:@"capturas.sqlite"]; // NSData *data=[NSData dataWithContentsOfFile:file];
并替换为以下内容
NSString *path = [[NSBundle mainBundle] pathForResource:@"database name without extension" ofType:@"sqlite"]; NSData *myData = [NSData dataWithContentsOfFile:path]; [composer addAttachmentData:myData mimeType:@"application/x-sqlite3" fileName:path]; [self presentModalViewController:composer animated:YES]; } else { UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Error" message:@"No se a podido mandar el mensage" delegate:self cancelButtonTitle:@"dismis" otherButtonTitles:nil,nil]; [alert show]; }
}