0

以下のコードを使用して、csv経由でメールを送信しています。メールが送信され、受信トレイで受信されましたが、csv添付されたファイルが受信されません。何が問題なのかわかりませんか?

-(void)generateCSV
{
NSFileManager *filemgr = [NSFileManager defaultManager];
NSArray *dirPaths;
NSString *docsDir;

dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                               NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];

if ([filemgr fileExistsAtPath:[NSString stringWithFormat:@"%@/test.csv", docsDir] ] == NO)
{
    [filemgr createFileAtPath:[NSString stringWithFormat:@"%@/test.csv", docsDir] contents:[@"" dataUsingEncoding: NSUnicodeStringEncoding] attributes: nil];
}

surveyarray = [db retrieveSurvey];

CHCSVWriter * csvWriter = [[CHCSVWriter alloc] initWithCSVFile:[NSString stringWithFormat:@"%@/test.csv", docsDir] atomic:NO];

NSString *str = [NSString stringWithFormat: @"No, CreatedDate, Question1, Question2, Question3, Comment\n"];
[csvWriter writeField:str];

for(int i = 0; i < surveyarray.count; i++)
{
    survey = [surveyarray objectAtIndex:i];
    NSString *str = [NSString stringWithFormat: @"%d, %@, %@, %@, %@, %@\n", i,  survey.createddate, survey.question1, survey.question2, survey.question3, survey.comment];
    [csvWriter writeField:str];
}

NSMutableString *subject = [[NSMutableString alloc] init];
NSMutableString *emailBody = [[NSMutableString alloc] init];

[subject appendString:@""];

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];

mailer.mailComposeDelegate = self;

[mailer setSubject:subject];

NSArray *toRecipients = [NSArray arrayWithObjects:@"", nil];
[mailer setToRecipients:toRecipients];

NSData *myData = [NSData dataWithContentsOfFile:[NSString stringWithFormat:@"%@/test.csv", docsDir]];
NSLog(@"%@", myData);

[mailer addAttachmentData:myData mimeType:@"text/csv" fileName:@"test.csv"];

[mailer setMessageBody:emailBody isHTML:NO];

mailer.modalPresentationStyle = UIModalPresentationPageSheet;

[self presentModalViewController:mailer animated:YES];

[mailer release];
[subject release];
[emailBody release];

[csvWriter release];
}

ファイルを生成csvしてから、添付ファイルとしてメールを送信しています。

メールボックスでメールを開きましたが、添付ファイルが含まれていません。

4

5 に答える 5

0

NSDataクラスの参照によると、dataWithContentsOfFile:で指定されたパスは絶対パスである必要があります。だからあなたは使うべきです

[NSString stringWithFormat:@"%@/test.csv", docsDir]

ただの代わりに@"test.csv"

私は現在あなたmyDataがゼロか空であるに違いない。

ちなみに、完全修飾パス/ファイル名でNSStringオブジェクトを1回だけ作成し、3〜4回作成するのではなく、それを再利用します。

于 2012-12-19T10:36:05.347 に答える
0

そこにあるものによると、ファイル名の最後に追加するのを忘れたと思い.csvます:)

于 2012-12-19T10:28:46.210 に答える
0

このコードは毎回私のために働きます!

http://developer.apple.com/library/ios/#samplecode/MailComposer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008865
于 2012-12-23T08:19:54.470 に答える
-1

上記の行をこれに置き換えてみてください

[mailer addAttachmentData:myData mimeType:@"text/csv" fileName:@"test.csv"];
于 2012-12-19T10:34:55.983 に答える
-1

ついに私は問題を解決しました。メールには添付ファイルが添付されていましたが、ファイルは空です。これは、最初のforループが-1で、iがint i = 0に変更されたため、正常に機能するようになりました。

于 2012-12-20T03:39:03.153 に答える