代码之家  ›  专栏  ›  技术社区  ›  smokris

如何在Cocoa应用程序中获取丢弃的邮件消息数据?

  •  2
  • smokris  · 技术社区  · 14 年前

    如果我包括 public.plain-text 在我的Info.plist文档类型中,我可以在Dock中的图标上放置邮件,并从 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: 网址?

    1 回复  |  直到 14 年前
        1
  •  1
  •   marcprux    14 年前

    我用苹果的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 Super secret message transfer pasteboard type”是什么,但您可能不想依赖它作为密钥名;相反,您可能只需要遍历所有密钥,看看它们中是否有一个看起来像文件路径。

    P、 这也可能引起人们的兴趣: http://www.wuffwuffware.com/developer.html