2012-12-19 111 views
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文件,然後發送電子郵件作爲附件。

我在我的郵箱中打開郵件,它不包含任何附件。

回答

-1

終於我解決了這個問題。電子郵件沒有附加附件,只是文件是空的。這是因爲for循環的初始值爲-1,我更改爲int i = 0,現在它工作正常

0

據我所看到的there,我會說,你忘了你的文件名:)

+1

是的,他做到了。但是這根本不應該造成太大的傷害。如果這是唯一的問題,那麼數據將被正確地附加到電子郵件。只有在保存附件時纔在郵件客戶端接收,默認文件名是「test」而不是「test.csv」。 –

-1

嘗試更換上面的線這

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

是的,你可以。它是一種文本的子類型。請參閱http://www.iana.org/assignments/media-types/text/index.html –

+0

用@「test.csv」替換@「test」有幫助嗎? – ask4asif

+0

這當然是一種改進,但並未解決缺失附件的問題。 –

0

根據NSData的類的末尾添加.csv引用,dataWithContentsOfFile給出的路徑:應該是絕對路徑。所以,你應該用

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

,而不是僅僅@"test.csv"

目前我敢打賭,你的myData爲零或空。

順便說一句,我會創建一個NSString對象與全限定路徑/文件名只有一次,並重新使用,而不是創建它3或4次。

+0

我編輯了代碼,但仍然沒有得到,我嘗試登錄nsdata,reutnr'<>' –

0

此代碼每次都適用於我!

http://developer.apple.com/library/ios/#samplecode/MailComposer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008865