无法将CSV文件附加到iPhone Mail应用程序

无法将CSV文件附加到iPhone Mail应用程序

问题描述:

下面的代码非常适合通过邮件应用程序发送文本(.txt)附件(textfile.csv需要在任何地方使用textfile.txt进行修改).但是,当我尝试附加csv文件时,它根本无法工作(邮件应用程序打开,显示textfile.csv的图标,但是当邮件到达时,它没有附件(数据也未显示在消息正文中).如果将mime类型更改为"text/plain",会有所不同,我很困惑...我在做什么错了吗?有什么想法吗?

The code below works perfectly to send text (.txt) attachments via the mail application (textfile.csv needs to be modified everywhere with textfile.txt). However when I try to attach csv files it does not work at all (the mail application opens up showing the icon of the textfile.csv but when the mail arrives it has no attachment (nor the data is displayed within the message body). No difference if I change the mime type to "text/plain". I am puzzled... What am I doing wrong?? Any ideas please?

    - (NSString *)getPath {
   NSString *paths = [NSSearchPathForDirectoriesInDomains
   (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
   return [paths stringByAppendingPathComponent:@"textfile.csv"];
}

//Saves file to Documents folder
//Method writes a string to a text file
-(void) writeToTextFile{
 //get the documents directory:
 NSArray *paths = NSSearchPathForDirectoriesInDomains
 (NSDocumentDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0];


 //make a file name to write the data to using the documents  directory:
 NSString *fileName = [NSString stringWithFormat:@"textfile.csv", 
 documentsDirectory];
 //create content
 NSString *content = @"One,Two,Three,Four,Five";

 //save content to the documents directory
 [content writeToFile:fileName 
     atomically:NO 
    encoding:NSStringEncodingConversionAllowLossy 


 error:nil]; 
}

// Displays an email composition interface inside the application. Populates all the Mail fields.
-(void)displayComposerSheet
{ 
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
 picker.mailComposeDelegate = self; 
 [picker setSubject:@"Subject"];

 // Set up recipients
 NSArray *toRecipients = [NSArray arrayWithObject:@"email@domain.com"];

 [picker setToRecipients:toRecipients];
 // Fill out the email body text
 NSString *emailBody = (@"Data is attached as a .CSV file");

 [picker setMessageBody:emailBody isHTML:NO];

 NSString *SavedDataPath = [self getPath];
 NSString *path = SavedDataPath;

 NSData *myData = [NSData dataWithContentsOfFile:path];
    [picker addAttachmentData:myData mimeType:@"text/csv" fileName:@"textfile.csv"];  

 [self presentModalViewController:picker animated:YES];
    [picker release];
}

NSString *str_mail = @"one,two,three";
NSData *myData = [str_mail dataUsingEncoding:NSUTF8StringEncoding]; 

MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
[mailController addAttachmentData:myData mimeType:@"text/csv" fileName:@"myfile"];
[mailController setMessageBody:@"body" isHTML:NO];
[self presentModalViewController:mailController animated:YES];