将文件附加到电子邮件中--收到后文件不在



我想将.csv文件附加到电子邮件中,这样用户就可以发送它。此时,我知道该文件实际上是在我在模拟器中工作时创建的(我可以找到并打开它),并且它似乎已附加到创建的电子邮件中。然而,由于我不能从sim发送电子邮件,这是我到达那里的距离。

部署在我的iPad上,表明文件已创建并附加到电子邮件(电子邮件正文中包含标题正确的文件图标)。我可以通过电子邮件发送,但收到电子邮件时没有附加任何文件。

以下是我用来创建并写入文件的代码:

-(NSString *)dataFilePath
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSLog(@"dataFilePath created");
    return [documentsDirectory stringByAppendingPathComponent:@"WMDGstats.csv"];
    NSLog(@"File path: %@", documentsDirectory);
}
-(void) createCSVFile
{
    NSLog(@"Top of createCSVFile");
//    [[NSFileManager defaultManager] removeItemAtPath:pngFilePath error:&error];

    if (![[NSFileManager defaultManager] fileExistsAtPath:[self dataFilePath]])
    {
        [[NSFileManager defaultManager] createFileAtPath: [self dataFilePath] contents:nil attributes:nil];
        NSLog(@"File created");
    }
...yada, yada data creation

    NSFileHandle *handle;
    handle = [NSFileHandle fileHandleForWritingAtPath: [self dataFilePath] ];
    [handle truncateFileAtOffset:0];
    [handle writeData:[fullString dataUsingEncoding:NSUTF8StringEncoding]];
    [self mailCSV];
}

以下是我将其附加到电子邮件的方式:

-(void) mailCSV
{
    if ([MFMailComposeViewController canSendMail])
    {
        MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
        mail.mailComposeDelegate = self;
        [mail setSubject:@"Subject"];
        [mail setMessageBody:@"message body" isHTML:NO];
        [mail setToRecipients:@[@"testingEmail@example.com"]];
        NSData *WMDGData = [NSData dataWithContentsOfFile:@"WMDGstats.csv"];
        [mail addAttachmentData:WMDGData mimeType:@"text.csv" fileName:@"WMDGstats.csv"];
        [self presentViewController:mail animated:YES completion:NULL];
    }
    else
    {
        NSLog(@"This device cannot send email");
    }
}

有什么想法吗?

谢谢你的光临!

编辑:

根据rmaddy在下面评论中的善意指导,我提供了文件的完整文件路径:

    NSData *WMDGData = [NSData dataWithContentsOfFile:[documentsDirectory stringByAppendingPathComponent:@"WMDGstats.csv"]];

它的工作原理非常完美——文件创建、附加、邮寄和接收!

谢谢妈妈!!!

以下行:

NSData *WMDGData = [NSData dataWithContentsOfFile:@"WMDGstats.csv"];

可能返回nil,因为您需要指定文件的正确路径。由于要将文件保存在Documents文件夹中,因此需要指定完整路径。

相关内容

  • 没有找到相关文章

最新更新