2009-11-07 11 views
7

मैं MFMailComposeViewController के माध्यम से सीएसवी संलग्नक भेजने के साथ एक समस्या हो रहा है। कभी कभी वे ठीक के माध्यम से आते हैं, लेकिन अन्य उपयोगकर्ताओं के लिए वे अनुलग्नकों के रूप में के माध्यम से नहीं आते हैं, बल्कि ईमेल में पाठ इनलाइन के रूप में (< br/लाइन रिटर्न के बजाय > साथ।) यह बहुत अजीब बात है। किसी को पता है कि मैं क्या गलत कर रहा हूँ? यहाँ मेरी कोड का एक टुकड़ा है:MFMailComposeViewController सीएसवी लगाव नहीं संलग्न किया जा रहा है, लेकिन इनलाइन दिखा बजाय

MFMailComposeViewController *mailComposeViewController = [[MFMailComposeViewController alloc] init]; 
mailComposeViewController.mailComposeDelegate = self; 

NSString *csv = @"foo,bar,blah,hello"; 
NSData *csvData = [csv dataUsingEncoding:NSUTF8StringEncoding]; 
[mailComposeViewController addAttachmentData:csvData mimeType:@"text/csv" fileName:@"testing.csv"]; 

[mailComposeViewController setSubject:@"testing sending csv attachment"]; 
[mailComposeViewController setMessageBody:@"csv file should be attached" isHTML:NO]; 
[self presentModalViewController:mailComposeViewController animated:YES]; 

उत्तर

0

मेरा मानना ​​है कि setMessageBody:isHTML: को दूसरा पैरामीटर संलग्नक इनलाइन ऊपर दिखाई न देना YES होना चाहिए।

0

आप हां में isHTML परम सेट, फिर भी आपकी संदेश के मुख्य भाग सादा/पाठ के रूप में भेजा जा सकता है, तो संदेश के मुख्य भाग में इस तरह के रूप में प्रतिनिधित्व किया जा सकता है। और सादा/पाठ संदेशों में अनुलग्नक हमेशा कुछ ईमेल क्लाइंट (आउटलुक) द्वारा सही ढंग से पहचाने जाते नहीं हैं।

मेरे मामले में संदेश के मुख्य भाग में एक कड़ी जोड़ने में मदद की। एचटीएमएल टैग के साथ बोल्ड के रूप में टेक्स्ट स्वरूपण भी काम करता है। मुश्किल!

आइपॉड 1G 3.1.3 पर परीक्षण किया गया।

[NSString dataUsingEncoding:] 

एक वैध लेकिन खाली NSData ऑब्जेक्ट यदि निर्दिष्ट एन्कोडिंग के लिए रूपांतरण संभव नहीं है: के लिए बाहर देखने के लिए

10
-(IBAction)btnPressed:(id)sender { 
    NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
    NSString *docDir = [arrayPaths objectAtIndex:0]; 
    NSString *Path = [docDir stringByAppendingString:@"/CSVFile.csv"]; 
    NSData *csvData = [NSData dataWithContentsOfFile:Path]; 

    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; 
    controller.mailComposeDelegate = self; 

    [controller setSubject:@"For csv file..."]; 
    [controller setMessageBody:@"...csv file is hear.." isHTML:NO]; 
    [controller addAttachmentData:csvData mimeType:@"text/csv" fileName:@"CSVFile.csv"]; 
    [self presentModalViewController:controller animated:YES]; 
    [controller release]; 
} 
+1

इसकी अच्छा धन्यवाद – jal

0

यह मामला यहां नहीं हो सकता है, लेकिन एक बात यह है कि है। पूर्ण संस्करण का उपयोग करने के लिए बेहतर:

[NSString dataUsingEncoding: s allowLossyConversion: YES] 

या लौटाए गए डेटा की लंबाई की जांच करें। ऐसा प्रतीत होता है कि मेल प्रक्रिया में कहीं भी शून्य-लंबाई डेटा अनुलग्नक छंटनी की जाती हैं।

2

हाय मैं CSV फ़ाइल बनाना और मेल के साथ संलग्न कर दें लेकिन सुनिश्चित करें कि आप MessageUI.Framework जोड़ सकते हैं और "MessageUI/MFMailComposeViewController.h" और deligate इससे संबंधित शीर्ष लेख "MessageUI/MessageUI.h" आयात करने के लिए है बनाने के लिए नमूना कोड डाल "MFMailComposeViewControllerDelegate" ... मैं इस WL दूसरों

- (void)viewDidLoad { 

arrCsv=[[NSArray alloc]initWithObjects:@"Hello",@"Hi",@"traun",@"fine",nil]; 
NSArray *paths = NSSearchPathForDirectoriesInDomains 

(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *fileName = [NSString stringWithFormat:@"%@/try.csv", documentsDirectory]; 

[[arrCsv componentsJoinedByString:@","] writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:NULL]; 

} 



-(ibAction)btnMail { 

NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
NSString *docDir = [arrayPaths objectAtIndex:0]; 
NSString *Path = [docDir stringByAppendingString:@"/CSVFile.csv"]; 
NSData *csvData = [NSData dataWithContentsOfFile:Path]; 
MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; 
controller.mailComposeDelegate = self; 
[controller setSubject:@"For csv file..."]; 
[controller setMessageBody:@"...csv file is hear.." isHTML:NO]; 
[controller addAttachmentData:csvData mimeType:@"text/csv" fileName:@"CSVFile.csv"]; 
[self presentModalViewController:controller animated:YES]; 
[controller release]; 

} 


- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{ message.hidden = NO; 
switch (result) 
{ 
    case MFMailComposeResultCancelled: 
     message.text = @"Result: canceled"; 
     break; 
    case MFMailComposeResultSaved: 
     message.text = @"Result: saved"; 
     break; 
    case MFMailComposeResultSent: 
     message.text = @"Result: sent"; 
     break; 
    case MFMailComposeResultFailed: 
     message.text = @"Result: failed"; 
     break; 
    default: 
     message.text = @"Result: not sent"; 
     break; 
} 
[self dismissModalViewControllerAnimated:YES]; 
} 
1

के लिए उपयोगी आशा सेट के रूप में "application/ओकटेट धारा" और कहा कि इनलाइन अनुलग्नकों को दूर करने के चाल करना चाहिए माइम प्रकार (मैं अभी भी के विस्तार के नाम पर रखा गया मेरी फ़ाइल यानी पीडीएफ)

+0

आईओएस 8 के साथ, इस समाधान है कि काम किया है मेरे लिए। – lifjoy

+0

आईओएस 8 पर जेपीईजी संलग्नक के साथ मेरी मदद नहीं की। – shelll