CSV 未附加到应用内电子邮件



所以我有一段时间了这个问题,只是无法让它工作!我一直在构建一个调查应用程序,用户只需在其中输入信息并将其保存到csv文件中。我现在处于我需要将应用程序中的 csv 文件附加到电子邮件地址的阶段......

我刚刚在我的新i-phone上对此进行了测试,收到电子邮件时没有附件?它在邮件应用程序和模拟器中,但是当电子邮件帐户收到邮件时,附件已经消失了?谁能帮忙??我的代码如下:

- (IBAction)send:(id)sender {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *savedFilePath = [documentsDirectory stringByAppendingPathComponent:@"result‌s.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)filenamefilepath wrong,因为nsdata CSV将被nil

2)addAttachmentData mimeType: fileName:方法中的filenameonly 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];

以防万一将来有人遇到此问题。

相关内容

最新更新