0
我想将.csv文件附加到电子邮件中,以便用户可以发送它。此时,我知道该文件实际上是在我在模拟器中工作时创建的(我可以找到并打开它),并且它似乎被附加到创建的电子邮件中。但是,由于我无法从SIM卡发送电子邮件,所以我尽可能地到达那里。将文件附加到电子邮件 - 收到文件后不存在
在我的iPad上部署,其迹象表明该文件已创建并附加到电子邮件(正确标题为文件图标包含在电子邮件正文中)。我可以通过电子邮件发送电子邮件,但收到电子邮件时未附上任何文件。
下面是我使用的创建和写入文件的代码:
-(NSString *)dataFilePath
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSLog(@"dataFilePath created");
return [documentsDirectory stringByAppendingPathComponent:@"WMDGstats.csv"];
NSLog(@"File path: %@", documentsDirectory);
}
-(void) createCSVFile
{
NSLog(@"Top of createCSVFile");
// [[NSFileManager defaultManager] removeItemAtPath:pngFilePath error:&error];
if (![[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]])
{
[[NSFileManager defaultManager] createFileAtPath: [self dataFilePath] contents:nil attributes:nil];
NSLog(@"File created");
}
...yada, yada data creation
NSFileHandle *handle;
handle = [NSFileHandle fileHandleForWritingAtPath: [self dataFilePath] ];
[handle truncateFileAtOffset:0];
[handle writeData:[fullString dataUsingEncoding:NSUTF8StringEncoding]];
[self mailCSV];
}
而这里的我把它附加到电子邮件的方式:
-(void) mailCSV
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
mail.mailComposeDelegate = self;
[mail setSubject:@"Subject"];
[mail setMessageBody:@"message body" isHTML:NO];
[mail setToRecipients:@[@"[email protected]"]];
NSData *WMDGData = [NSData dataWithContentsOfFile:@"WMDGstats.csv"];
[mail addAttachmentData:WMDGData mimeType:@"text.csv" fileName:@"WMDGstats.csv"];
[self presentViewController:mail animated:YES completion:NULL];
}
else
{
NSLog(@"This device cannot send email");
}
}
任何想法?
感谢您的期待!
编辑:
每rmaddy在下面他的评论亲切指导下,我提供该文件的完整的文件路径:
NSData *WMDGData = [NSData dataWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@"WMDGstats.csv"]];
而且它完美的作品 - 创建,并附加,邮寄文件并收到!
谢谢rmaddy !!!
我不知道这是造成问题,但'text.csv'不是正确的MIME类型。试试'text/csv'。 – bdesham 2014-10-05 15:58:20
您需要在调用'[NSData dataWithContentsOfFile:@“WMDGstats.csv”];'时指定完整路径,而不仅仅是文件名。很可能,'WMDGData'是'nil',因为你的路径无效。 – rmaddy 2014-10-05 16:01:49
是的!!!完美,谢谢@rmaddy!请参阅上面的我的编辑,并请您在评论中回答,以便我可以接受它,并upvote它! – rattletrap99 2014-10-05 16:24:51