2009-08-07 7 views
7

Ho creato con successo un file txt (cioè il file esiste e si apre), vorrei allegarlo ad una e-mail che sto generando con successo (cioè l'e-mail si apre e posso mettere il testo in l'e-mail ecc. e inviarlo). Ecco il codice che ho adesso per eseguire l'allegato:allegando un file di testo ad una e-mail

// Attach a file to the email 
NSString *path = [self dataFilePath:(@"myFile.txt")]; 
NSData *myData = [NSData dataWithContentsOfFile:path]; 
[picker addAttachmentData:myData mimeType:@"text/plain" fileName:@"myFile"]; 

Il dataFilePath è un metodo che uso per ottenere il percorso di un file, funziona benissimo come io lo uso spesso. Il codice sopra inserisce un < br /> < br />, quindi ha il testo dal file di testo con qualche altro < br /> < br /> ..breaks in là ... quindi questo in realtà non collega il archiviarlo nel testo dell'email ... Vorrei allegare il file.

Ho copiato/modificato questo codice da altri post su StackOverflow e sto avendo difficoltà a trovare informazioni sul sito di Apple. Nota: non sono sicuro di quale sia il mimeType per un file txt, poiché il loro sito web (www.iana.org) non denota un txt ... ???

Aggiornamento: modificato in codice aggiornato e Grazie per aver confermato che "plain" era la scelta corretta per mimeType.

risposta

7

Questa non è una soluzione completa, ma il tipo MIME per il testo normale è:

text/plain
+0

Potrebbe spiegare la tua risposta? – AsifHabib

3

Questo potrebbe essere un problema con il vostro client di posta elettronica, e non con il vostro programma. Il file di testo appare come allegato nella vista di composizione della posta, ma poi quando ricevi l'email è nel corpo principale?

Quando si riceve l'e-mail, provare a fare una vista su di essa (o visualizzare l'originale, o qualunque sia il client di posta elettronica che lo chiama). Si dovrebbe vedere qualcosa di simile nella e-mail:

--Apple-Mail-1-494911569 
Content-Disposition: attachment; 
    filename=myFile 
Content-Type: text/plain; 
    name=myFile 
Content-Transfer-Encoding: 7bit 

Text of the file here. 

--Apple-Mail-1-494911569 

Se si vede che nella e-mail, quindi il file sia fissato correttamente. È possibile che il tuo client di posta elettronica stia ignorando l'intestazione MIME Content-Disposition. In GMail e Apple Mail, le sezioni email come quella sopra sono definitivamente mostrate come allegati.

Per quello che vale, ecco qualche codice completo di lavoro del crea una e-mail, aggiunge un corpo HTML, aggiunge un allegato di testo, e invia mostra la vista di composizione:

NSData *textData = [[self getEmailAttachment] dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *htmlData = [self getEmailBodyHTML]; 

/* Set up the mail compose view and put in the body/attachment */ 
MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease]; 
[mailComposer setMessageBody:htmlData isHTML:NO]; 
[mailComposer addAttachmentData:textData mimeType:@"text/plain" fileName:@"tripometer_report.csv"]; 

/* Set default subject */ 
[mailComposer setSubject:@"Email subject"]; 

mailComposer.mailComposeDelegate = self;  
[self presentModalViewController:mailComposer animated:YES];