所以我有一段时间了这个问题,只是无法让它工作!我一直在构建一个调查应用程序,用户只需在其中输入信息并将其保存到csv文件中。我现在处于我需要将应用程序中的 csv 文件附加到电子邮件地址的阶段......
我刚刚在我的新i-phone上对此进行了测试,收到电子邮件时没有附件?它在邮件应用程序和模拟器中,但是当电子邮件帐户收到邮件时,附件已经消失了?谁能帮忙??我的代码如下:
- (IBAction)send:(id)sender {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedFilePath = [documentsDirectory stringByAppendingPathComponent:@"results.csv"];
NSData *csvData = [NSData dataWithContentsOfFile:savedFilePath];
MFMailComposeViewController *mailcomposer = [[MFMailComposeViewController alloc] init];
[mailcomposer addAttachmentData:csvData mimeType:@"text/csv" fileName:@"results.csv"];
[mailcomposer setToRecipients:@[@"gpsflighttrial@gcap.eu"]];
[mailcomposer setSubject:self.subject.text];
[mailcomposer setMessageBody:self.message.text isHTML:NO];
}
将你的mimeType更改为@"application/csv",它就可以工作了。
csv 未附加的原因可能是以下:
1)filename
或filepath
wrong
,因为nsdata
CSV将被nil
。
2)addAttachmentData mimeType: fileName:
方法中的filename
应only name
而不是file format
类型。
您的方法更改如下:
-(IBAction)send:(id)sender {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
// Determine the file name and extension
NSString *strFileName = @"results.csv";
NSArray *filepart = [strFileName componentsSeparatedByString:@"."];
NSString *filename = [filepart objectAtIndex:0];
//get file path
NSString *savedFilePath = [documentsDirectory stringByAppendingPathComponent:strFileName];
//Now check if file exits
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:savedFilePath]){
NSData *csvData = [NSData dataWithContentsOfFile:savedFilePath];
if(csvData)
{
MFMailComposeViewController *mailcomposer = [[MFMailComposeViewController alloc] init];
[mailcomposer addAttachmentData:csvData mimeType:@"text/csv" fileName:filename];
[mailcomposer setToRecipients:@[@"gpsflighttrial@gcap.eu"]];
[mailcomposer setSubject:self.subject.text];
[mailcomposer setMessageBody:self.message.text isHTML:NO];
}
else
NSLog(@"error csv data not created");
}
else
NSLog(@"error file doesnot exists");
}
经过许多不眠之夜和尝试了很多不同的方式,我终于找到了与朋友一起工作的方式(见下面的代码)
NSString *docsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSData *attachment = [NSData dataWithContentsOfFile:[docsDirectory stringByAppendingPathComponent:@"results.csv"]];
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setToRecipients:@[@"gpsflighttrial@gcap.eu"]];
[mailer setSubject:self.subject.text];
[mailer setMessageBody:self.message.text isHTML:NO];
[mailer addAttachmentData:attachment mimeType:@"application/csv" fileName:@"results.csv"];
[self presentModalViewController:mailer animated:YES];
以防万一将来有人遇到此问题。