Вложение не отображается в письме, отправленном через iPhone - PullRequest
1 голос
/ 04 декабря 2009

Я отправил вложение через приложение для iPhone.

Но когда я вижу почту, я вижу upin, который показывает, что что-то прикреплено.

Но когда я открываю почту, я не могу найти вложение?

В чем проблема?

-(IBAction)btnPressedExport:(id)sender{

    NSArray *x=[[NSArray alloc] initWithArray:[DatabaseAccess getAllTransactionsForUserID:[BudgetTrackerAppDelegate getUserID] profileID:[BudgetTrackerAppDelegate getProfileID]]];
    int i=-1,j=[x count];
    NSDictionary *tmp;
    NSMutableString *stringToWrite=[[NSMutableString alloc] init];
    for(;i<j;i++){
        if(i==-1){
            [stringToWrite appendString:@"TransactionID,TransactionDate,ProfileName,ProfileType,GroupName,GroupType,CategoryName,TransactionAmt\n"];
        } else {
            tmp=[x objectAtIndex:i];
            [stringToWrite appendFormat:@"%@,%@,%@,%@,%@,%@,%@,%@\n",
             [tmp valueForKey:@"TraID"],[tmp valueForKey:@"TraDate"],[tmp valueForKey:@"ProfileName"],[tmp valueForKey:@"ProfileType"],[tmp valueForKey:@"GroupName"],[tmp valueForKey:@"GroupType"],[tmp valueForKey:@"CatName"],[tmp valueForKey:@"TraAmt"]];
        }
    }
    [stringToWrite writeToFile:[self pathOfCSVForExport] atomically:YES encoding:NSStringEncodingConversionAllowLossy error:nil];
//  [stringToWrite writeToFile:[self pathOfCSVForExport] atomically:YES];


    picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate=self;
//  picker.delegate=self;

    [picker setSubject:@"Hello from Sugar!"];


     //Set up recipients
    NSArray *toRecipients = [NSArray arrayWithObject:@"sugar.srk@pqr.com"]; 
//  NSArray *ccRecipients = [NSArray arrayWithObjects:@"xyz.dalal@pqr.com", @"kandarp.dave@phptalent.com", nil]; 
//  NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com"]; 

    [picker setToRecipients:toRecipients];
    [picker setCcRecipients:ccRecipients];  
//  [picker setBccRecipients:bccRecipients];

    // Attach an image to the email
    NSString *path = [[NSBundle mainBundle] pathForResource:@"myExport" ofType:@"csv"];
    NSData *myData = [NSData dataWithContentsOfFile:path];

    NSString *fileNameToSend=@"BudgetTracker.csv";//[NSString stringWithFormat:@"%@.csv",[x valueForKey:@"ProfileName"]];

    [picker addAttachmentData:myData mimeType:@"text/plain" fileName:fileNameToSend];
    // text/html/
    // Fill out the email body text
    NSString *emailBody = [NSString stringWithFormat:@"%@",@"Hello! This is export test."];
    [picker setMessageBody:emailBody isHTML:NO];

    [self presentModalViewController:picker animated:YES];

}

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
//  NSLog(@"here2");
    switch (result)
    {
        case MFMailComposeResultCancelled: break;
        case MFMailComposeResultSaved: break;
        case MFMailComposeResultSent: break;
        case MFMailComposeResultFailed: break;
        default: break;
    }
//  self.navigationController.navigationBarHidden=NO;
//  [self becomeFirstResponder];
    [self dismissModalViewControllerAnimated:YES];
}

1 Ответ

3 голосов
/ 04 декабря 2009

Это выглядит неправильно, если только это не для тестирования:

// Attach an image to the email
NSString *path = [[NSBundle mainBundle] pathForResource:@"myExport" ofType:@"csv"];
NSData *myData = [NSData dataWithContentsOfFile:path];

путь, который вы используете, - это файл в вашем пакете приложений, который доступен только для чтения, поэтому он не может быть файлом CSV, который вы только что создали.

если вы хотите написать временный файл и отправить его по электронной почте, вам нужно записать его в какое-нибудь место, например, в папку «Документы», то есть путь, например,

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
NSString *docDirectory = [sysPaths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/myexport.csv", docDirectory];
...