如何在Cocoa应用程序中丢弃邮件数据?

问题描述:

我正在研究一个Cocoa应用程序,我想让邮件被删除。如何在Cocoa应用程序中丢弃邮件数据?

如果我包括我的Info.plist文件类型public.plain-text,我可以在Dock中的图标拖放邮件消息,并从application:openFiles:委托方法得到这样一个文件路径:

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

.. 。我可以从这个文件中读取原始的消息数据。到现在为止还挺好。

但是,我也希望用户能够在应用程序窗口上放置邮件消息。所以我这样做:

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

...在performDragOperation:,我得到这样一个URL从剪贴板:

message:%[email protected]%3E 

如果我尝试做这个网址的NSURLRequest,它给我的错误“不支持的URL”。

如何从此message: URL获取原始消息数据?

我试过了与(从http://developer.apple.com/library/mac/#samplecode/PasteboardPeeker/Introduction/Intro.html)苹果PasteboardPeeper示例代码,并拖动一条消息到主确实显示该消息的路径可供选择:

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 

我不知道什么是“ MV超级秘密信息传递粘贴板类型“,但您可能不想将其作为关键名称;相反,也许你可以遍历所有的键,看看它们中的任何一个看起来像文件路径。

P.S.这也可能是有趣的:http://www.wuffwuffware.com/developer.html

+0

谢谢。我确实遍历了所有'[pboard types]'列出它们的内容,但是除了'message:'url之外,没有找到多少东西,包含消息的邮箱的文件路径(但是没有链接到消息本身)和消息的主题行。 – smokris 2010-11-07 14:57:17

+1

哦,wuffwuffware示例使用AppleScript来获取消息正文。不理想(AppleScript是缓慢和繁琐的),但总比没有好。再次感谢。 – smokris 2010-11-07 16:24:09

+0

对此有何好运?我试图做同样的事情,虽然我可以在Dock上放置链接到.eml文件,但我似乎无法在NSTextView顶部拖放它 – strange 2013-11-06 17:10:10