如何在Cocoa应用程序中删除邮件消息数据?

时间:2010-11-07 00:51:45

标签: cocoa macos drag-and-drop nsurl apple-mail

我正在开发一个Cocoa应用程序,我希望将其删除。

如果我在我的Info.plist文档类型中包含public.plain-text,我可以在Dock中的图标上放置一条Mail消息,并从application:openFiles:委托方法获取这样的文件路径:

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

...我可以从这个文件中读取原始消息数据。到目前为止一切都很好。

但是,我还希望用户能够在应用程序窗口中删除邮件消息。所以我这样做:

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

...在performDragOperation:中,我从粘贴板中获取了这样的URL:

message:%3CAANLkTikeTeWYU39JpTovxF2PC0Mm=xkrU7fHNh6gGh6V@mail.gmail.com%3E

如果我尝试在此网址上执行NSURLRequest,则会向我显示错误“不支持的网址”。

如何从此message:网址获取原始邮件数据?

1 个答案:

答案 0 :(得分:1)

我使用Apple的PasteboardPeeper示例代码(来自http://developer.apple.com/library/mac/#samplecode/PasteboardPeeker/Introduction/Intro.html)进行了尝试,并将消息拖入主要内容确实显示消息的路径可用:

PasteboardRef: 1395632  ItemCount: 1
   Index: 1  item ID: 789514
      "dyn.ah62d4rv4gu8y4zvanr41xxxxx30n25wqz4ca5pfsr30c35feb4he2pssrxgn6vasbu1g7dfqm1"
      "MV Super-secret message transfer pasteboard type"
      '' ______ 82  /Users/guest/Library/Mail/IMAP-me@gmail.com@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: 3C6EEF5CFD6A04D6395BC617836C91FC3A050542759970026E@cornell.edu 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