2009-08-07 6 views
7

J'ai réussi à créer un fichier txt (le fichier existe et s'ouvre), je souhaite le joindre à un e-mail que je génère avec succès (l'e-mail s'ouvre et je peux insérer du texte l'e-mail etc. et l'envoyer). Voici le code que j'ai maintenant pour exécuter la pièce jointe:joindre un fichier texte à un 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"]; 

Le DataFilePath est une méthode que j'utilise pour obtenir le chemin d'un fichier, il fonctionne très bien comme je l'utilise souvent. Le code ci-dessus met un < br /> < br />, puis a le texte du fichier texte avec un peu plus de < br /> < br /> ..breaks là-bas ... donc cela ne fait pas attacher le fichier il colle dans le texte de l'e-mail ... Je voudrais joindre le fichier.

J'ai copié/modifié ce code à partir d'autres publications sur stackoverflow et j'ai de la difficulté à trouver des informations sur le site d'Apple. Note: Je ne suis pas sûr de ce que le mimeType est pour un fichier txt, car leur site web (www.iana.org) ne dénote pas un txt ... ???

Mise à jour: Modification du code mis à jour, et Merci de confirmer que "plain" était le bon choix pour le mimeType.

Répondre

7

Ce n'est pas une solution complète, mais le type MIME pour le texte brut est:

text/plain
+0

pourriez-vous s'il vous plaît expliquer votre réponse? – AsifHabib

3

Cela pourrait être un problème avec votre client, et non avec votre programme. Est-ce que le fichier texte apparaît en tant que pièce jointe dans la vue composition de courrier, mais lorsque vous recevez l'e-mail, il est dans le corps principal?

Lorsque vous recevez l'e-mail, essayez de créer une source d'affichage (ou affichez l'original, ou quel que soit l'appel de votre client de messagerie). Vous devriez voir quelque chose comme ça dans l'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 

Si vous voyez que dans l'e-mail, le fichier est correctement fixé. Il est possible que votre client de messagerie ignore l'en-tête MIME Content-Disposition. Dans GMail et Apple Mail, les sections d'email comme celle ci-dessus sont clairement montrées comme pièces jointes.

Pour ce que ça vaut, le code est un peu de travail complet ici le crée un e-mail, ajoute un corps HTML, ajoute une pièce jointe de texte et envoie montre la vue Compose:

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]; 
Questions connexes