2

我正在开发一个 Cocoa 应用程序,我希望允许将邮件消息丢弃到该应用程序中。

如果我包含在我的 Info.plist 文档类型中,我可以在 Dock 中的图标上放置一条邮件消息,并从委托方法public.plain-text中获取如下文件路径: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在此 URL 上执行操作,它会给我错误“不支持的 URL”。

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

4

1 回答 1

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 超密消息传输粘贴板类型”是什么,但您可能不想依赖它作为键名;相反,也许您可​​以遍历所有键,看看它们中的任何一个看起来是否像文件路径。

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

于 2010-11-07T01:25:46.003 回答