Come posso inviare documenti di tipo pacchetto come attacco di posta?
-
11-12-2019 - |
Domanda
Ho un documento di tipo pacchetto - I.e. È davvero una cartella, ma utilizza NSFileWrapper
e conforme a com.apple.package
per visualizzare come file - che voglio condividere via e-mail.Ho fatto un MFMailComposeViewController
e sto cercando di risolvere cosa dare al primo parametro di addAttachmentData:mimeType:fileName:
.
Il pacchetto contiene un file immagine e una plist, anche se ciò potrebbe cambiare in futuro.
Come posso convertire un pacchetto per i dati?È il modo giusto di fare questo?
Soluzione
Come hai detto, un pacchetto è in realtà una cartella.È interpretato come un pacchetto solo sui sistemi operativi OSX.
Come tale, il protocollo di posta non può interpretarlo come pacchetto / come file singolo e vede solo una cartella standard.
L'unico modo per inviare questo via e-mail è quello di comprimere i file in un singolo file.Puoi farlo creando un archivio ZIP del tuo pacchetto o un file TAR.GZ ad esempio.
Ci sono molteplici soluzioni per creare un archivio ZIP dal codice in cacao.È possibile utilizzare direttamente la libreria libz e il codice C, o utilizzare alcune librerie di terze parti (che già ha un codice generico per questo e ti aiuta a farlo più facile usando i metodi di cacao), come zipchive o altri.
Altri suggerimenti
I miei file non sono grandi, quindi la Zip è eccessiva e sto anche cercando di evitare di utilizzare il codice di terze parti.Quindi ho trovato un approccio diverso per allegare più file in un singolo allegato e-mail.
In primo luogo, ho già un oggetto NSFileWrapper che contiene tutti i file che desidero nell'attacco.La chiave è utilizzare il metodo serializzato di NSFileWrapper per ottenere un oggetto NSDATA da utilizzare per l'allegato e-mail.Sto usando 'Application / Obet-Stream' per il mimetype.Quando torno a recuperare per aprire l'allegato, utilizzo l'initwithserializedresentationsentation della NSFileWrapper: Metodo per ottenere la schiena originale NSFileWrapper.
funziona per me perché il file allegato verrà utilizzato e aperto solo dalla mia app.Ovviamente, questo non funzionerà se è necessario fare qualcosa con l'allegato al di fuori della tua app.In tal caso, la zip sembra che sarebbe la scelta logica.