2012-01-27 4 views
5

Sto usando il seguente codice per inviare una e-mail con il contenuto dell'oggetto NSData (con il nome della variabile: dati):iOS: l'invio di e-mail con allegato aggiunge un altro allegato (.txt) file automaticamente

MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init]; 

[controller setSubject:@"Subject"]; 
[controller addAttachmentData:data mimeType:@"application/pdf" fileName:@"Attachment"]; 
[controller setMessageBody:@"Please find attached the connections for..." isHTML:NO]; 

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

Aggiunge un UIView generato come pdf come allegato e invia l'e-mail. Va bene, oltre a un singolo problema:

Quando l'email viene ricevuta, insieme al pdf allegato, c'è un altro file .txt allegato il cui contenuto è: "Inviato dal mio iPad". Se non applico il pdf, il messaggio "Inviato dal mio iPad" appare nel corpo dell'email, invece in un file allegato.

Qualcuno ha idea di come questo può essere risolto? Non voglio che il file di testo sia allegato al messaggio.

saluti,

Petar

+0

Ciao, c'è un aggiornamento a questo problema o ad ogni bug segnalato ad Apple a cui posso riferirmi? – Amit

risposta

4

Sembra che quando si invia una e-mail con un allegato, tutto in esso è avvolto come un messaggio multipart/mixed, e tutto codificato come Base64, compreso il corpo del messaggio e firma! Quindi sembra che questo ...

Content-Type: multipart/mixed; 
    boundary="_003_81E0DB72B1F643FBAA40D9BCB66A11E4_" 

--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_ 
Content-Type: text/plain; charset="utf-8" 
Content-Transfer-Encoding: base64 

SGkgTW9tIQ== 

(che è "Hi Mom!" codificato come Base64)

--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_ 
Content-Type: application/octet-stream; name="MyAttachment.xlsx" 
Content-Description: MyAttachment.xlsx 
Content-Disposition: attachment; filename="MyAttachment.xlsx"; size=15262 
Content-Transfer-Encoding: base64 

UEsDBBQABgAIAAAAIQA3Mb2RgAEAAIQFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC 

snip

AF81AABkb2NQcm9wcy9hcHAueG1sUEsFBgAAAAANAA0AaAMAACA4AAAAAA== 

--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_ 

Content-Type: text/html; name="ATT00001.htm" 
Content-Description: ATT00001.htm 
Content-Disposition: attachment; filename="ATT00001.htm"; size=91 
Content-Transfer-Encoding: base64 

PGh0bWw+PGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiI+PGRpdj48L2Rpdj48ZGl2Pjxicj48YnI+U2VudCBmcm9tIG15IGlQYWQ8L2Rpdj48L2JvZHk+PC9odG1sPg== 

(che è <html><body bgcolor="#FFFFFF"><div></div><div><br><br>Sent from my iPad</div></body></html> come Base64)

--_003_81E0DB72B1F643FBAA40D9BCB66A11E4_-- 

Anche se si va su Impostazioni >> Posta, contatti, calendari e cancella la firma, si ottiene comunque un documento HTML vuoto allegato.

La giusta risposta a lungo termine sarà probabilmente quella di inviare questo ad Apple come un bug e attendere. Nel frattempo, se questo è davvero un bug di smarrimento, suggerirei di generare autonomamente l'intero corpo di posta multipart/mixed, senza la firma, e vedere se questo imbroglia MFMailComposeViewController a pensare che l'e-mail non abbia un allegato. Personalmente, penso che sto per dire al mio cliente di conviverci. :)

+0

Ciao, c'è un aggiornamento a questo problema o qualche bug segnalato ad Apple a cui posso riferirmi? – Amit