2014-11-14 4 views
0

Так что у меня была эта проблема на некоторое время и просто не могу заставить ее работать! Я создаю приложение для опроса, в котором пользователи просто вводят информацию и сохраняют ее в файл csv. Im теперь на этапе, где мне нужно прикрепить файл csv в приложении к адресу электронной почты ...CSV не прилагается к электронной почте приложения?

Я только что протестировал это на своем новом i-телефоне и нет прикрепления, когда получено электронное письмо? Его там в почтовом приложении и в симуляторе, однако, когда сообщение получено на учетной записи электронной почты, вложение прошло? Может ли кто-нибудь помочь? Мой код ниже:

- (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:@[@"[email protected]"]]; 
    [mailcomposer setSubject:self.subject.text]; 
    [mailcomposer setMessageBody:self.message.text isHTML:NO]; 
} 
+0

проверить мой ответ –

+0

Привет, принц, спасибо за помощь в том, что он говорит, что файл пути не объявлен ...? – June

ответ

0

Измените свой mimeType на @ "application/csv", и он будет работать.

0

Причина CSV не может быть прикреплен эфир ниже:

1) filename или filepath является wrong как результат nsdata из CSV будет nil.

2) filename в addAttachmentData mimeType: fileName: метод должен cantain 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:@[@"[email protected]"]]; 
      [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"); 

} 
+0

Мое плохое: можете ли вы проверить ответ на обновление, где удалите файл pathforfile и вместо этого добавьте saveFilePath в эту строку: [fileManager fileExistsAtPath: savedFilePath] –

+0

Спасибо за это, но теперь приложение для почты не открывается? Нажатие кнопки отправки теперь ничего не делает? Я проверил его все связанные и т. Д., Поэтому не уверен, что произошло? – June

0

Таким образом, после многих бессонных ночей и много пытаются разными способами я наконец-то нашел способ, который работает с другом (см код ниже)

NSString *docsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    NSData *attachment = [NSData dataWithContentsOfFile:[docsDirectory stringByAppendingPathComponent:@"results.csv"]]; 

    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
    mailer.mailComposeDelegate = self; 
    [mailer setToRecipients:@[@"[email protected]"]]; 
    [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]; 

На всякий случай у кого-то есть эта проблема в будущем.

Смежные вопросы