2010-11-07 31 views
2

Je suis en train de travailler sur une application Cocoa dans laquelle je souhaite autoriser la suppression des messages.Comment se faire larguer Les données des messages dans une application Cocoa?

Si j'inclus public.plain-text dans mes Info.plist Types de documents, je peux déposer un message Mail sur l'icône dans le Dock et obtenir un chemin de fichier comme celui-ci à partir de la méthode déléguée application:openFiles::

"/Users/smokris/Library/Caches/TemporaryItems/Re_ multiplexer question 3.eml" 

.. .et je peux lire les données de message brutes de ce fichier. Jusqu'ici tout va bien.

Toutefois, je souhaite également que l'utilisateur puisse supprimer des messages électroniques dans la fenêtre de l'application. Donc, je fais ceci:

[window registerForDraggedTypes:[NSArray arrayWithObjects:(NSString *)kPasteboardTypeFileURLPromise,nil]]; 

... et performDragOperation:, je reçois une URL comme celui-ci de la table de montage:

message:%[email protected]%3E 

Si j'essayer de faire un NSURLRequest sur cette URL, il me donne la erreur "URL non prise en charge".

Comment puis-je obtenir les données de message brutes à partir de cette URL message:?

Répondre

1

Je l'ai essayé avec le code exemple PasteboardPeeper d'Apple (à partir http://developer.apple.com/library/mac/#samplecode/PasteboardPeeker/Introduction/Intro.html), et en faisant glisser un message dans le principal fait montre que le chemin du message est disponible:

PasteboardRef: 1395632 ItemCount: 1 
    Index: 1 item ID: 789514 
     "dyn.ah62d4rv4gu8y4zvanr41xxxxx30n25wqz4ca5pfsr30c35feb4he2pssrxgn6vasbu1g7dfqm1" 
     "MV Super-secret message transfer pasteboard type" 
     '' ______ 82 /Users/guest/Library/Mail/[email protected]@imap.gmail.com/INBOX.imapmb 

     "dyn.ah62d4rv4gu8zg7puqz3c465fqr3gn7bakf41k55rqf4g86vasbu1g7dfqm10c6xeeb4hw6df" 
     "Super-secret Automator pasteboard type" 
     '' ______ 454 <?xml version= 1.0 encoding= UTF-8 ?> < DOCTYPE plist PUBLIC -//Apple//DTD PLI 

     "dyn.ah62d4rv4gu8yc6durvwwa3xmrvw1gkdusm1044pxqyuha2pxsvw0e55bsmwca7d3sbwu" 
     "Apple files promise pasteboard type" 
     '' ______ 212 <?xml version= 1.0 encoding= UTF-8 ?> < DOCTYPE plist PUBLIC -//Apple//DTD PLI 

     "public.url" 
     "" 
     'url ' ______ 74 message: [email protected] 3E 

     "public.url-name" 
     "" 
     'urln' ______ 56 A friend thought you would be interested in this station 

     "com.apple.pasteboard.promised-file-content-type" 
     "" 
     '' ______ 23 dyn.ah6xxxqmxhk2x43prru 

     "com.apple.pasteboard.promised-file-url" 
     "" 
     '' ______ 0 

     "dyn.ah62d4rv4gu8y6y4usm10xxxxqzb085xyqz1hk64uqm10c6xenv61a3k" 
     "NSPromiseContentsPboardType" 
     '' ______ 0 

     "dyn.ah62d4rv4gk81a4dgsq" 
     "" 
     'phfs' PT____ 14 ???????? Pssf 

Je ne sais pas quoi " MV Le type de tableau de transfert de messages super secret est, mais vous ne voudrez peut-être pas vous en servir comme nom de clé; Au contraire, vous pourriez peut-être parcourir toutes les clés et voir si l'une d'elles ressemble à un chemin de fichier.

P.S. Cela pourrait également être intéressant: http://www.wuffwuffware.com/developer.html

+0

Merci. J'ai parcouru tous les '[pboard types]' pour lister leur contenu, mais je n'ai pas trouvé beaucoup plus que le message: 'url, les chemins de fichier de la boîte aux lettres dans laquelle le message est contenu (mais pas le lien lui-même), et la ligne d'objet du message. – smokris

+1

Oh, l'exemple de wuffwuffware utilise AppleScript pour obtenir le corps du message. Pas idéal (AppleScript est lent et encombrant), mais beaucoup mieux que rien. Merci encore. – smokris

+0

Une chance avec ça? J'essaie de faire la même chose et bien que je puisse obtenir le lien vers le fichier .eml lorsqu'il est déposé sur le Dock, je n'arrive pas à l'obtenir par glisser-déposer sur un NSTextView – strange