SwiftUI:如何在 macOS 上从 Mail 中拖放电子邮件
Posted
技术标签:
【中文标题】SwiftUI:如何在 macOS 上从 Mail 中拖放电子邮件【英文标题】:SwiftUI: How to drag and drop an email from Mail on macOS 【发布时间】:2021-02-20 11:40:16 【问题描述】:作为@Asperi 回答我关于如何拖放contacts 的问题的后续行动,我还希望能够以同样的方式拖放电子邮件。这是我的代码:
import SwiftUI
import UniformTypeIdentifiers
let uttypes = [String(kUTTypeEmailMessage)]
struct ContentView: View
let dropDelegate = EmailDropDelegate()
var body: some View
VStack
Text("Drag your email here!")
.padding(20)
.onDrop(of: uttypes, delegate: dropDelegate)
struct EmailDropDelegate: DropDelegate
func validateDrop(info: DropInfo) -> Bool
return true
func dropEntered(info: DropInfo)
print ("Drop Entered")
func performDrop(info: DropInfo) -> Bool
let items = info.itemProviders(for: uttypes)
for item in items
print (item.registeredTypeIdentifiers) // prints []
item.loadDataRepresentation(forTypeIdentifier: kUTTypeEmailMessage as String, completionHandler: (data, error) in
if let data = data
print(data)
)
return true
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
我没有得到任何可以解码的数据。
2020-11-08 09:34:54.877532+0000 DropContact[3856:124769] 找不到符合 public.email-message 类型的表示
这个功能一直困扰着我,所以非常感谢任何帮助。
【问题讨论】:
【参考方案1】:嗯...方法是一样的,唯一的问题是Apple Mail 不提供kUTTypeEmailMessage
UTI 表示拖拽(复制)
如果我们将 self 注册为通用 kUTTypeContent
UTI 并调查来自 Mail 的投递邮件的粘贴板内容,我们会得到:
也就是说,这是一个完整的表示列表:
com.apple.mail.PasteboardTypeMessageTransfer,
com.apple.mail.PasteboardTypeAutomator,
com.apple.pasteboard.promised-file-url,
dyn.ah62d4rv4gu8y6y4usm1044pxqzb085xyqz1hk64uqm10c6xenv61a3k,
NSPromiseContentsPboardType,
com.apple.pasteboard.promised-file-content-type,
dyn.ah62d4rv4gu8yc6durvwwa3xmrvw1gkdusm1044pxqyuha2pxsvw0e55bsmwca7d3sbwu,
Apple files promise pasteboard type,
public.url,
CorePasteboardFlavorType 0x75726C20,
dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu,
Apple URL pasteboard type,
public.url-name,
CorePasteboardFlavorType 0x75726C6E,
public.utf8-plain-text,
NSStringPboardType
所以现在您可以从上面加载任何这些类型的数据(当然 Apple 自己的私有数据除外)。而且,顺便说一下,该列表可能(而且更确切地说将)取决于 macOS 版本。
【讨论】:
这很有趣。如果我将其中任何一个切换出去,我仍然会得到零数据。我一定遗漏了一些明显的东西。谢谢 谁能帮忙? 如果有人能解决这个问题,我将提供 1000 赏金!以上是关于SwiftUI:如何在 macOS 上从 Mail 中拖放电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
在 MacOS Mojave 上从 PyInstaller 运行应用程序后如何修复 msgcat::mc 错误?
(SwiftUI, MacOS 11.0) 如何在 SecureTextFeild 中检测焦点?