2012-01-09 168 views
0

我有一个应用程序将通过电子邮件收集的数据作为附件发送。我使用下面的代码创建数据并将其保存到我的文档文件夹中名为'leads.xml'的文件中。如何将保存的文本文件作为电子邮件附件发送

NSArray *sysPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *sysFilePath = [sysPath objectAtIndex:0]; 
[picker addAttachmentData:sysFilePath mimeType:@"text/xml" fileName:@"leads.xml"]; 

. 
. 
. 

[emailBody writeToFile:filePath atomically:YES]; 

然后我尝试将保存的文件发送如使用此代码的附件 -

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

当它运行时我得到一个错误,我究竟做错了什么?

+0

你得到它工作的错误..? – DShah 2012-01-09 14:05:19

回答

0

邮件想要一个NSData对象,包含的文件内容不是路径。 您需要将文件加载到NSData对象,如:

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docDirectory = [sysPaths objectAtIndex:0]; 
NSString *filePath = [docDirectory stringByAppendingPathComponent:@"leads.xml"]; 

NSData *fileData = [NSData dataWithContentsOfFile:filePath]; 
[picker addAttachmentData:fileData mimeType:@"text/xml" fileName:@"leads.xml"]; 
0

您必须提供的数据,而不是文件路径:

NSData *data = [NSData dataWithContentsOfFile:sysFilePath]; 
[picker addAttachmentData:data mimeType:@"text/xml" fileName:fileName]; 

文档:

- (void)addAttachmentData:(NSData*)attachment mimeType:(NSString*)mimeType fileName:(NSString*)filename 

附件:

要附加的数据。通常,这是您要包含的文件的内容。该参数不能为零。

0

试试这个代码

if(mailController) 
      { 
       mailController.mailComposeDelegate = self; 
       // NSLog(@"current index:%d",currentIndex_); 
       NSString *string = [NSString stringWithFormat:@"00%d",currentIndex_+43]; 
       // NSLog(@"string:%@",string); 
       NSString *imageIndex = [[NSBundle mainBundle] pathForResource:string ofType:@"jpg"]; 

       NSData *myData = [[NSData alloc] initWithContentsOfFile:imageIndex]; 

       [mailController addAttachmentData:myData mimeType:@"application/jpg" fileName:@"Report"]; 
       [mailController setSubject:@"your subject"]; 
       [mailController setMessageBody:@"" isHTML:NO]; 
       [self presentModalViewController:mailController animated:YES]; 
       [mailController release]; 
      } 

我送的形象在这里,而不是它,你可以把你的文本文件。 这可能会帮助你

0

夫妇的事情...

您可以检查文件系统的模拟器:

~/Library/Application Support/iPhone Simulator/5.0/Applications/... 

,看看是否实际上是被保存在您的文件,你的期望。

第二件事: NSString实际上有一个负载方便的方法来处理文件路径,所以你不必检查尾随的斜杠和其他垃圾。处理文件路径时应始终使用它们。

与路

+ pathWithComponents: 
– pathComponents 
– completePathIntoString:caseSensitive:matchesIntoArray:filterTypes: 
– fileSystemRepresentation 
– getFileSystemRepresentation:maxLength: 
– isAbsolutePath 
– lastPathComponent 
– pathExtension 
– stringByAbbreviatingWithTildeInPath 
– stringByAppendingPathComponent: 
– stringByAppendingPathExtension: 
– stringByDeletingLastPathComponent 
– stringByDeletingPathExtension 
– stringByExpandingTildeInPath 
– stringByResolvingSymlinksInPath 
– stringByStandardizingPath 
– stringsByAppendingPaths: 
+0

问题不在于构建文件路径,而在于将文件数据添加到电子邮件中。 – rckoenes 2012-01-09 12:40:28

相关问题